Commit Graph
3579 Commits
Author SHA1 Message Date
Arnaud Gourlay 0d9db0ea05 Optimize process search results (#8163) 2026-02-17 17:42:11 +01:00
xzfc 66d0c36009 Merge io and memory into common (#8155)
* Unify parking_lot/arc_lock feature

* Move lib/common/{io,memory}/* -> lib/common/common/*

- Mmap-related items are grouped into `common::mmap` sub-module:
  - `memory/src/chunked_utils.rs`      -> `common/src/mmap/chunked.rs`
  - `memory/src/madvise.rs`            -> `common/src/mmap/advice.rs`
  - `memory/src/mmap_ops.rs`           -> `common/src/mmap/ops.rs`
  - `memory/src/mmap_type_readonly.rs` -> `common/src/mmap/mmap_readonly.rs`
  - `memory/src/mmap_type.rs`          -> `common/src/mmap/mmap_rw.rs`
- Filesystem-related items are grouped into `common::fs` sub-module:
  - `common/src/fs.rs`          -> `common/src/fs/sync.rs`
  - `io/src/file_operations.rs` -> `common/src/fs/ops.rs`
  - `io/src/move_files.rs`      -> `common/src/fs/move.rs`
  - `io/src/safe_delete.rs`     -> `common/src/fs/safe_delete.rs`
  - `memory/src/checkfs.rs`     -> `common/src/fs/check.rs`
  - `memory/src/fadvise.rs`     -> `common/src/fs/fadvise.rs`
- Rest is moved straight into `common`:
  - `io/src/storage_version.rs` -> `common/src/storage_version.rs`

The old `io` and `memory` are now hollow crates that re-export items
from `common`. These hollow crates will be removed in next commits.

* Replace uses of `io` and `memory` with new paths in `common`

Since `io` and `memory` are just re-exports of `common`, these
replacements are no-op.

* Remove `io` and `memory` crates
2026-02-17 11:01:14 +01:00
Arnaud Gourlay acbfbd3edf Optimize MmapPointToValues from_iter (#8158)
* Optimize MmapPointToValues from_iter

* fix const typo
2026-02-17 11:01:14 +01:00
dependabot[bot] 0b5d210138 build(deps): bump pyo3 from 0.28.0 to 0.28.1 (#8154)
Bumps [pyo3](https://github.com/pyo3/pyo3) from 0.28.0 to 0.28.1.
- [Release notes](https://github.com/pyo3/pyo3/releases)
- [Changelog](https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pyo3/pyo3/compare/v0.28.0...v0.28.1)

---
updated-dependencies:
- dependency-name: pyo3
  dependency-version: 0.28.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-17 11:01:05 +01:00
dependabot[bot] 7db9f99cab build(deps): bump arc-swap from 1.8.1 to 1.8.2 (#8146)
Bumps [arc-swap](https://github.com/vorner/arc-swap) from 1.8.1 to 1.8.2.
- [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vorner/arc-swap/compare/v1.8.1...v1.8.2)

---
updated-dependencies:
- dependency-name: arc-swap
  dependency-version: 1.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-17 11:01:04 +01:00
Andrey Vasnetsov c98ecf53dc prevent proxy locking while snapshotting (#8131)
* [manual] do not lock proxy segmen while accessing wrapped segment

* fmt

* [manual] remove extra update lock
2026-02-16 10:17:50 +01:00
Leo Henonandlhenon999 ea77efbc90 Fix flaky test_rate_more_per_minute (#8135)
Co-authored-by: lhenon999 <77656081+lhenon999@users.noreply.github.com>
2026-02-16 10:17:50 +01:00
Tim Visée 518b64a29a Relax resharding version check, don't require 1.16.4-dev or up (#8129) 2026-02-16 10:17:31 +01:00
Roman Titov d96709a6db Fix too_many_internal_resets error (#8128)
Patch `tonic` and `hyper` crates to expose `max_local_error_reset_streams`,
and *disable* it when creating internal gRPC connections
2026-02-16 10:17:29 +01:00
Arnaud Gourlay cc3f578b5c Remove update queue opnum from CollectionInfo (#8127) 2026-02-16 10:17:29 +01:00
Andrey Vasnetsov 2f79e8fd15 [manual] skip extra links indexing if vectors are deleted (#8125) 2026-02-16 10:17:29 +01:00
Andrey Vasnetsov a6b99fd583 distributed optimization info (#8120)
* [AI] initial implementation

* [AI] review fixes

* [manaul] some small fix

* [AI] fix issue about serializing optional fields

* upd schema

* [manual] review fixes

* [manual] only ask updatable replicas about optimizations
2026-02-16 10:17:28 +01:00
Roman Titov bdd4bb5180 Ensure WAL and shard clocks consistency when creating shard snapshot (#8104) 2026-02-13 11:52:23 +01:00
Ivan Pleshkov ba5231b48b Dont lock WAL while serialization (#8093)
* dont lock WAL while serialization

* review remarks

* remove error log, its already logged in update worker
2026-02-13 09:55:46 +01:00
xzfc 88c51ae772 Add doc for #[pyclass_repr] (#8110) 2026-02-13 09:55:46 +01:00
tellet-q 0951e03c5f Add new stage in TransferStage (#8113)
* Add new stage to stream records transfers

* Report better names to users
2026-02-13 09:55:46 +01:00
Andrey Vasnetsov 4c120cac0a undeprecated vector conversions (#8114) 2026-02-13 09:55:46 +01:00
Arnaud Gourlay fc8b4f8175 Fix update queue length aggregation (#8108) 2026-02-13 09:55:46 +01:00
971c6a3a8a Limit number of Clocks (#8105)
* [manual] limit number of update clocks to 64 to prevent permanent overhead created by spikes

* explicit yield + fix tests

* Add explicit comment on why we yield async thread

* In resolve_wal_delta_randomized test fix clock cleanup and satisfy test

* Use tokio timeout

Co-authored-by: Roman Titov <ffuugoo@users.noreply.github.com>

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Roman Titov <ffuugoo@users.noreply.github.com>
2026-02-13 09:55:45 +01:00
Tim Visée caa5a14866 Fix stream records transfer data race, losing pending updates (#8103)
* Add integration test to assert all queued updates are also transferred

* Plunge update queue in stream records transfers

* Migrate existing plunger usages to new plunge helper

* Skip test if not compiled with staging flag

* Only send delay operation when staging feature is enabled

* Reformat

* Fix review remarks
2026-02-13 09:55:37 +01:00
Tim Visée 10aacb9e5c Revert "Fix panic on startup with old storage, reenable old shard key format (#7564)" (#7565)
This reverts commit 84b2fb8793.

This reverts pull request <https://github.com/qdrant/qdrant/pull/7564>.
2026-02-13 09:55:37 +01:00
Luis CossíoandArnaud Gourlay bc6246df5a [relevance feedback] add rest and grpc interfaces (#7399)
* add rest and grpc interfaces

Also handle inference for this query

* follow refactor from base branch

* renaming from Ms Cooper

* get started on validation testing

* more validations

* test equivalence with query when less than 2 feedback elements

* rename feedback query to relevance_feedback query

* fix extraction of context pairs

* rename feedback vector to example

* make coderabbit happier

* upd test

---------

Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
2026-02-13 09:55:37 +01:00
Arnaud Gourlay dd018aa894 Add unused_async lint (#8102) 2026-02-13 09:55:37 +01:00
Andrey Vasnetsov 5bc3144c22 non blocking reading from wal (#8101)
* move wal.lock.read into a spawn_blocking

* [AI] In the file with update_worker bloast the code, please try to move it out of the main function, so the function itself stay clean
2026-02-13 09:55:37 +01:00
Andrey Vasnetsovandtimvisee 2110d456b5 parse round floats as integers on payload indexing (#8100)
* parse round floats as integers on payload indexing

* use backward conversion to validate if float is actualy integerable

* fmt

* Use then_some

---------

Co-authored-by: timvisee <tim@visee.me>
2026-02-13 09:55:36 +01:00
Luis Cossío b88a1d76ce fix: handle score_threshold in Formula queries (#8097)
* handle `score_threshold` in Formula queries

* AI: add openapi test

prompt: Upload 4 points with a numeric payload, use the payload as the
score, and set a score threshold. We can assert which ids should be in
the result and which shouldn't
2026-02-13 09:55:18 +01:00
Andrey VasnetsovandTim Visée 341d4294ee HTTPS snapshot links (#8095)
* [manual] generate snapshot download link with respect of enabled tls

* Simplify http(s) selection

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2026-02-13 09:55:15 +01:00
Andrey Vasnetsov 6cbdf0c05a Avoid shards holder locks on snapshot (#8072)
* refactor shard.create_snapshot to own everything necessary in the future for snapshotting

* do not lock shards_holder and replica_set during snapshot

* separate locks and snapshot creation all the way down

* separate locks and snapshot creation even further on the local shard level

* final touches

* minor review fixes
2026-02-13 09:55:11 +01:00
dependabot[bot] 19fb061a6d build(deps): bump flate2 from 1.1.8 to 1.1.9 (#8085)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.1.8 to 1.1.9.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.8...1.1.9)

---
updated-dependencies:
- dependency-name: flate2
  dependency-version: 1.1.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-13 09:55:03 +01:00
dependabot[bot] 1cfff243c3 build(deps): bump siphasher from 1.0.1 to 1.0.2 (#8088)
Bumps [siphasher](https://github.com/jedisct1/rust-siphash) from 1.0.1 to 1.0.2.
- [Commits](https://github.com/jedisct1/rust-siphash/compare/1.0.1...1.0.2)

---
updated-dependencies:
- dependency-name: siphasher
  dependency-version: 1.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-13 09:55:03 +01:00
Tim Visée a8cd217d7a Fix integer overflow in query batch when using high limits (#7950) 2026-02-13 09:54:12 +01:00
Andrey Vasnetsovandcoderabbitai[bot] 015e1b2656 audit logging (#8071)
* initial implementation

* internal logging type

* wrap more places into auth function

* [manual refactor] use &Auth in .toc fucntion - minimise direct .access()

* [manual refactor] fmt

* [manual refactor] remove unannotated .access in creation of snapshots

* [manual refactor] remove unannotated .access in cluster telemetry

* [manual refactor] remove unannotated .access

* [manual refactor] do not log /metrics api access

* [manual refactor] do not run the service if audit logging failed to init

* [manual refactor] make auditable operation names for point and cluster updates

* [manual refactor] remove excess cloning of auth object

* [manual refactor] fmt

* [AI] instead of manual writing into the file, use tracing_appender crate

* [AI] simplify configuration to match internal crate

* fmt

* [manual refactor] cover staging options

* [AI] refactor x-forwarded-for handelling

* [manual refactor] use consts for x-forwarded-for + recover handelling for RFC case in tonic

* Update src/tonic/forwarded.rs

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* [manual] review fix: use FORWARDED in actix

* [manual] review fix: do not log strict mode checks

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-02-10 00:07:27 +01:00
Luis Cossío 54ce64b07a disable multi_threaded_readers_consistent (#8078) 2026-02-10 00:07:22 +01:00
Ivan Pleshkov 21a0ed0c3a fix wal replay deadlock in update queue (#8068) 2026-02-10 00:06:18 +01:00
Kyamran Shakhaev f9bd3a00aa Add unified actix version (#8074) 2026-02-10 00:06:14 +01:00
Ivan Pleshkov 505340b428 Fix flaky test_wal_replay_loads_pending_to_queue (#8067) 2026-02-10 00:06:08 +01:00
Jojiiandtimvisee dfe8d8a797 Use spawn_blocking for segment locking (#8069)
* Use spawn_blocking for segment locking

* Wrap blocking task in AbortOnDropHandle

* Use single blocking thread for fetching all segment size information

---------

Co-authored-by: timvisee <tim@visee.me>
2026-02-10 00:05:58 +01:00
Andrey Vasnetsov 037600e8af Weighted rrf (#8063)
* weighted rrf implementation

* test

* fmt

* fix edge

* validate number of sources and number of weights

* do not partial match

* upd schema

* review fixes

* update formula

* remove calcualtions from tests

* update comment, because AI have OCD

* fmt
2026-02-10 00:04:33 +01:00
Jojiiandgenerall 65d6b7d016 Don't lock SegmentHolder for the entire duration of read operations (#8056)
* Don't lock SegmentHolder during read operations

* Add comment clarifying eager segment allocation

* review fixes

* Remove TODO

* Shorter locking of segment holder in calculate_local_shard_stats

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2026-02-10 00:03:52 +01:00
tellet-qandtimvisee 79d0678440 Add more stages for shard transfer profiling (#8027)
* Improve stages reporting

* Remove transferring records info from snapshot transfer's comment

* Add detailed profiling for ReshardingStreamRecords

* Address AI review comment

* Remove some nesting

---------

Co-authored-by: timvisee <tim@visee.me>
2026-02-10 00:03:26 +01:00
Luis Cossío bc44bc1718 [trififo] seqlock with interior mutability (#8012) 2026-02-10 00:03:20 +01:00
Tim Visée 9e2450ec53 Enable update queue (#8046) 2026-02-10 00:03:14 +01:00
xzfc b1e3e421b0 Chore: promote dependencies to workspace level (#8061)
* Promote `env_logger` to workspace dependency

* Promote `anyhow` to workspace dependency

* Promote `rmp-serde` to workspace dependency

* Promote `tinyvec` to workspace dependency

* Promote `async-trait` to workspace dependency

* Promote `url` to workspace dependency

* Promote `self_cell` to workspace dependency

* Promote `cc` to workspace dependency

* Promote `bitpacking` to workspace dependency
2026-02-10 00:02:45 +01:00
Ivan BoldyrevandAndrey Vasnetsov 47da1f6661 Split SegmentEntry into appendable and non-appendable part (#8047)
* Split `SegmentEntry`

Add `ImmutableSegmentEntry` for operations that can be applied to
immutable segments, and make the `SegmentEntry` as it subtrait.

* Rename to `NonAppendableSegmentEntry`

It differs semantically from `ImmutableSegmentEntry` by allowing point
deletion.  Move point deletion to the trait too.

* Fix docstring

* use NonAppendableSegmentEntry where possible

---------

Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
2026-02-10 00:02:32 +01:00
f42774b0d1 Remove UpdateSignal::Stop (#8050)
* remove UpdateSignal Stop

refactor wal truncation

restart workers even if wal truncation fails

* dont duplicate notification code in update worker

* send manually cancellation token to update worker

* revert stop_update_workers and keep as is

* refactor wal truncation

* are you happy clippy

* Inline breaks into single block

* Remove closure and call directly

* dont recreate channels in config update

* more comments

* debug assert

* fmt

---------

Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
2026-02-10 00:02:22 +01:00
Arnaud GourlayandAndrey Vasnetsov 395c12809b Attempt to Fix RST_STREAM by draining http2 channels (#8019)
* Fix RST_STREAM by draining http2 channels

* remove controversial duration time for now

---------

Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
2026-02-10 00:01:36 +01:00
Ivan Pleshkov 78207079dd Update queue status in metrics and telemetry (#8060)
* update queue status in metrics and telemetry

* fix python tests

* update openapi
2026-02-10 00:01:27 +01:00
Tim Visée ac4cfed143 For snapshots directly restored, use default temp path in storage volume (#8059) 2026-02-10 00:00:00 +01:00
c1cefe7590 feat: Optimize the collection loading process during startup (#8053)
* feat: optimize the collection loading process during startup

* simplify config options

* chore: update config.yaml

* Remove global state

* Disallow zero values

* Remove intermediate map

* Rename ConcurrentLoadConfig to LoadConcurrencyConfig

* Flatten config

* Accept string inputs from environment variables

* Fix test compilation

---------

Co-authored-by: generall <andrey@vasnetsov.com>
Co-authored-by: chenliang <chenliang@chenliangdeMacBook-Air.local>
Co-authored-by: timvisee <tim@visee.me>
2026-02-09 23:59:06 +01:00
Luis Cossío 876609c4c1 cfg import behind linux flag (#8058) 2026-02-09 23:58:49 +01:00