Commit Graph
168 Commits
Author SHA1 Message Date
0ff1c4e2b7 Send the queue proxy batch as a pre-encoded gRPC body (#10617)
* Send the queue proxy batch as a pre-encoded gRPC body

The parent commits moved the WAL read, the operation clone and the request build
off the async runtime. Two passes over the batch were left on it.

Measured cost of each synchronous pass over a 26.2 MiB send batch (800 ops x 30
points x 256 dims), release build:

  pass 1  clone WAL operations      72.4 ms   moved by the parent commits
  pass 2  build gRPC request        22.2 ms   moved by the parent commits
  pass 3  clone request to send     65.7 ms   on the async runtime
  pass 4  protobuf encode (tonic)   41.4 ms   on the async runtime

Pass 3 is there because `with_points_client` takes `impl Fn` and the channel pool
calls that closure once per attempt, so each attempt needs its own owned message.
Pass 4 runs inside `poll_next`: for a unary call tonic encodes the whole message
in a single synchronous `encode_item`, so a worker is blocked for the full 41 ms,
once per attempt.

Encoding the batch up front removes both. The generated client cannot take a
pre-encoded body, `update_batch` is typed `impl IntoRequest<UpdateBatchInternal>`,
but all it does is pick a codec and a path and call `Grpc::unary`, and we already
build the client ourselves from a pooled channel. `update_batch_pre_encoded` does
the same three things with a codec that writes the encoded bytes through and
decodes the response with prost.

What stays on the runtime is the copy of the encoded body into tonic's send
buffer: 14.9 ms for 26.2 MiB under jemalloc, nearly all of it faulting in freshly
mapped pages rather than the copy itself (0.9 ms when the allocator hands back
warm pages). Retries share the same refcounted bytes instead of cloning and
re-encoding, so they drop with it.

  on the runtime before   107.2 ms per attempt
  on the runtime after     14.9 ms per attempt

Bypassing the generated client means the RPC path and message types no longer
follow the proto automatically, so a test checks them against the compiled
descriptor set.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZjWYpKeYdGpKiLeEZU9oc

* Hand the pre-encoded update batch a configured Grpc, take the service name from the generated code

`update_batch_pre_encoded` took a bare channel plus a `max_decoding_message_size`
argument, and its only caller passed `usize::MAX`. Every other internal client
applies that limit inside its `with_*_client` helper, so do the same: `with_grpc`
hands out the `tonic::client::Grpc` the generated clients wrap, already
configured, and the argument goes away.

The service half of the RPC identity now comes from the generated
`points_internal_server::SERVICE_NAME` instead of a second literal. Only the
method name and the path literal remain hand-written, still pinned to the
descriptor set by the test.

`PreEncodedMessage::encode` uses `encode_to_vec`: one pass instead of a separate
`encoded_len` call, and no `expect`.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* Adapt pre-encoding to the build/forward split from #10599

`forward_update_batch` takes `Arc<UpdateBatchInternal>` and encodes it
once on the blocking pool, so the channel pool's attempts share the
bytes. The queue proxy keeps the built request in that `Arc` across
`BATCH_RETRIES` and for the per-operation isolation path.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: generall <andrey@qdrant.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 15:38:30 +02:00
Tim Visée 7b466c60aa Bump dev version to 1.19.2-dev (#10464) 2026-09-03 14:36:29 +02:00
Tim Visée 20391cac08 Bump dev version to 1.19.1-dev (#10097) 2026-08-05 14:40:06 +02:00
Tim Visée e32145d05f Bump dev version to 1.18.3-dev (#9292) 2026-06-03 17:09:43 +02:00
Roman Titov 53a8562521 Upgrade tonic to v0.14.6 (#9139) 2026-05-25 16:11:43 +02:00
899e2e34a5 Bump dev version to 1.18.2-dev (#9135)
Co-authored-by: Cursor Agent <agent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-22 11:57:11 +02:00
Tim Visée 4bca939259 Bump dev version to 1.18.1-dev (#8960) 2026-05-08 17:27:10 +02:00
Tim Visée 0a1e455fe6 Bump dev version to 1.17.2-dev (#8730) 2026-04-20 12:24:32 +02:00
Arnaud Gourlay a4059c15af Remove unused dependency crates (#8589) 2026-04-01 18:15:18 +02:00
Tim Visée c73cf450e8 Bump dev version to 1.17.1-dev (#8161) 2026-02-19 13:36:14 +01:00
Tim Visée 9296874f9b Bump dev version to 1.16.4-dev (#7807) 2025-12-19 13:23:40 +01:00
Tim Visée d523d9fb99 Bump dev version to 1.16.3-dev (#7682) 2025-12-03 13:51:14 +01:00
Tim Visée e630cf59fa Bump dev version to 1.16.2-dev (#7604) 2025-11-25 15:01:34 +01:00
Tim Visée 77cd5962c2 Bump dev version to v1.16.1-dev (#7548) 2025-11-17 15:45:10 +01:00
Tim Visée 3581c1bee9 Bump dev version to v1.15.6-dev (#7477) 2025-10-30 10:45:49 +01:00
Tim Visée 931b467dde Bump dev version to v1.15.5-dev (#7154) 2025-08-27 10:54:15 +02:00
Tim Visée 60cf81fa64 Bump dev version to v1.15.4-dev (#7062) 2025-08-14 15:57:43 +02:00
Andrey Vasnetsov 4a3008e77a Fix bm25 params (#7056)
* make bm25 parameters compatible with default fastembed params

* bm25 params in openapi schema

* fmt

* improve bm25 config deserialization

* more explicit docstring for disabling english
2025-08-14 14:23:29 +02:00
Tim Visée 8c1a01724f Bump dev version to v1.15.3-dev (#7014) 2025-08-12 13:45:34 +02:00
Kumar Shivendu 76cc63359d Bump dev version to 1.15.2-dev (#6955)
* Bump dev version to 1.15.2-dev

* Updated cargo.lock

* Trigger CI
2025-07-29 22:26:24 +05:30
Tim Viséeandgenerall 4ce0c722f7 Feature flag RocksDB dependency (#6646)
* Flag index selector

* Flag take_database_snapshot

* Flag field index builder

* Flag bool index

* Flag full text index

* Flag geo index

* Flag map index

* Feature flag numeric index

* Flag skip_rocksdb

* Flag payload storage

* Flag segment

* Flag builder

* Flag backup

* Make RocksDB crate optional

* Tweak feature flag gate

* Disable default segment crate features from all dependents

* Handle flag in collection crate correctly

* Flag payload storage types in tests

* Temporarily disable on-disk check for sparse vectors

* Flag sparse vector RocksDB in GPU code

* Fix compilation error since recent merge

* Flag payload storage types in new function

* remove todo

* Explicitly implement default to more clearly state difference

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2025-06-11 14:29:30 +02:00
Tim Visée 4f05ac3d79 Bump dev version to 1.14.2-dev (#6588) 2025-05-23 11:42:17 +02:00
Tim Visée a9e83f665f Bump dev version to 1.14.1-dev (#6411) 2025-04-22 14:45:56 +02:00
Tim Visée 1370e01d58 Use ahash for maps/sets holding point IDs, offsets or similar (#6388) 2025-04-17 23:11:35 +02:00
Tim Visée 00bbafaa00 Bump dev version to 1.13.7-dev (#6278) 2025-04-01 08:50:18 +02:00
Tim Visée 1d286412fe Bump dev version to 1.13.6-dev (#6219) 2025-03-21 12:33:34 +01:00
Tim Visée 3e536347e1 Bump Rust edition to 2024 (#6042)
* Bump Rust edition to 2024

* gen is a reserved keyword now

* Remove ref mut on references

* Mark extern C as unsafe

* Wrap unsafe function bodies in unsafe block

* Geo hash implements Copy, don't reference but pass by value instead

* Replace secluded self import with parent

* Update execute_cluster_read_operation with new match semantics

* Fix lifetime issue

* Replace map_or with is_none_or

* set_var is unsafe now

* Reformat
2025-02-25 11:21:25 +01:00
Tim Visée 3be641630f Bump dev version to 1.13.5-dev (#5996) 2025-02-17 11:00:28 +01:00
Tim Visée b675bb5b80 Bump dev version to 1.13.4-dev (#5972) 2025-02-11 15:43:02 +01:00
Tim Visée 976f1e9ae7 Bump dev version to 1.13.3-dev (#5895) 2025-01-28 13:09:17 +01:00
Tim Visée 0af7be081e Bump dev version to 1.13.2-dev (#5867) 2025-01-23 15:52:26 +01:00
Tim Visée f040d0b728 Bump dev version to 1.13.1-dev (#5815) 2025-01-16 14:37:27 +01:00
Tim Visée 9e359db714 Bump dev version to 1.12.7-dev (#5760) 2025-01-08 16:05:35 +01:00
Tim Visée 3c394f7131 Bump dev version to 1.12.6-dev (#5612) 2024-12-09 14:40:22 +01:00
Tim Visée 1ade25901a Bump dev version to 1.12.5-dev (#5476) 2024-11-19 13:09:47 +01:00
Tim Visée 9d83ef2a6d Bump dev version to 1.12.4-dev (#5432) 2024-11-12 16:56:12 +01:00
Tim Visée 48c02b29c7 Bump dev version to 1.12.3-dev (#5407) 2024-11-08 17:33:39 +01:00
Tim Visée f81b119ce0 Bump dev version to 1.12.2-dev (#5392) 2024-11-07 11:45:46 +01:00
Tim Visée df1c587c68 Bump dev version to 1.12.1-dev (#5213) 2024-10-10 12:56:28 +02:00
Tim Visée e804720551 Bump dev version to 1.11.6-dev (#5122) 2024-09-23 17:38:01 +02:00
Tim Visée bcd9bfd5ac Bump dev version to 1.11.5-dev (#5099) 2024-09-17 17:06:23 +02:00
Tim Visée 6f8dd8176a Bump dev version to 1.11.4-dev (#4986) 2024-08-29 17:07:04 +02:00
Tim Visée 2eff2c7227 Bump dev version to 1.11.3-dev (#4975) 2024-08-28 16:14:02 +02:00
Tim Visée 6f11e748c3 Bump dev version to 1.11.2-dev (#4965) 2024-08-27 11:47:56 +02:00
Andrey Vasnetsov 44130a462e Mmap subcrate refactoring (#4886)
* make mmap_type independent from segment structures

* make bitvec and thiserror workspace dependencies

* move mmap_type into common/memory subcrate

* fmt
2024-08-14 11:04:56 +02:00
Tim Visée 537bc70fc1 Bump dev version to 1.11.1-dev (#4880) 2024-08-13 12:41:14 +02:00
xzfc 461b07a82b Bump prost and tonic (#4737)
* Bump tonic to 0.10.2 and prost to 0.12.6, keep old prost for raft

* from_i32 -> try_from
2024-07-23 20:46:01 +02:00
xzfc a0ea3caccf Enable some of the pedantic clippy lints (#4715)
* Use workspace lints

* Enable lint: manual_let_else

* Enable lint: enum_glob_use

* Enable lint: filter_map_next

* Enable lint: ref_as_ptr

* Enable lint: ref_option_ref

* Enable lint: manual_is_variant_and

* Enable lint: flat_map_option

* Enable lint: inefficient_to_string

* Enable lint: implicit_clone

* Enable lint: inconsistent_struct_constructor

* Enable lint: unnecessary_wraps

* Enable lint: needless_continue

* Enable lint: unused_self

* Enable lint: from_iter_instead_of_collect

* Enable lint: uninlined_format_args

* Enable lint: doc_link_with_quotes

* Enable lint: needless_raw_string_hashes

* Enable lint: used_underscore_binding

* Enable lint: ptr_as_ptr

* Enable lint: explicit_into_iter_loop

* Enable lint: cast_lossless
2024-07-22 08:19:19 +00:00
Tim Visée a1ab6d36d2 Bump dev version to 1.10.2-dev (#4660) 2024-07-11 16:41:37 +02:00
Arnaud Gourlay 658a0beced Promote Rand dependency to workspace (#4606) 2024-07-03 13:11:11 +02:00