Commit Graph

1658 Commits

Author SHA1 Message Date
Roman Titov
e01957a4ee Move PlannedQuery and QueryScrollRequestInternal into shard crate (#7417) 2025-10-20 11:52:44 +02:00
Roman Titov
969cc82018 Move ShardQueryRequest into shard crate (#7410) 2025-10-15 16:38:22 +02:00
Roman Titov
6bbe27f8ec Move FormulaInternal into shard crate (#7409) 2025-10-15 15:17:41 +02:00
Andrey Vasnetsov
05ee4d15c3 async update operation (#7407)
* make update worker async

* fix missing async signal send

* Simplify and flatten update worker internals

---------

Co-authored-by: timvisee <tim@visee.me>
2025-10-15 11:58:41 +02:00
Andrey Vasnetsov
0101822998 make flush worker loop async (#7405)
* make flush worker loop async

* await flush worker properly finishes

* simplify flush await

* Improved future select, inline return

---------

Co-authored-by: timvisee <tim@visee.me>
2025-10-15 11:23:43 +02:00
Andrey Vasnetsov
8b2d73ac19 address parallel flushing problem in snapshot creation (#7404)
* address parallel flushing problem in snapshot creation

* explicit flush in test
2025-10-14 18:28:25 +02:00
Andrey Vasnetsov
5abb9ead76 add test for shard recovery after partial flush (#7402)
* add test for shard recovery after partial flush

* force flush with explicit fucntion

* Stop flush worker before explicitly flushing again

---------

Co-authored-by: timvisee <tim@visee.me>
2025-10-14 16:35:48 +02:00
Andrey Vasnetsov
02de826748 fix segment repair on load (#7400)
* fix segment repair on load

* workaround for rocksdb

* Minor comment tweaks

* In in memory ID tracker, unset version first before dropping mapping

* rename cleanup_versions into fix inconsistencies

---------

Co-authored-by: timvisee <tim@visee.me>
2025-10-14 14:06:50 +02:00
xzfc
10ebd1851d Use fs_err::exists and fs_err::tokio::try_exists (#7401) 2025-10-14 09:16:55 +00:00
Kumar Shivendu
c0f580bddd Shard key initial state (#7371)
* Allow specifying initial state while creating shard key

* Dont wait for Active state if initial_state is set

* Generate gRPC docs and OpenAPI spec

* Apply suggestions

* Skip from scheamrs not serde

* Add integration test

* minor suggestions
2025-10-13 17:58:34 +05:30
xzfc
95b4bbf978 Rename HnswConfig::{copy_vectors -> inline_storage} (#7389) 2025-10-13 10:08:06 +00:00
tellet-q
cdae750d0b Log shard transfer abort during consensus recovery (#7373)
* Add log line about aborting transfer during consensus recovery
2025-10-13 08:55:22 +02:00
Arnaud Gourlay
a24d380ee0 Investigate flaky snapshot transfer test (#7339) 2025-10-09 10:47:23 +02:00
Arnaud Gourlay
1fcb7a2139 Test continuous snapshot data loss (#7308)
* Continuous snapshot data loss

* assert vector & payload are present
2025-10-08 12:20:44 +02:00
Andrey Vasnetsov
8dd915c0b1 non appendable proxies (#7345)
* WIP: make proxy segment non-appendable

* make deleted points and index changes private to Proxy Segment

* consistently remove empty unused segment from holder on unproxifying and the end of optimization

* remove/fix obsolete test

* Fix comment, some general adjustments

* Also don't remove non-original segments

* Use ahash for map of proxy index changes

* Inline format arguments

* Simplify has point branching

* Assert that proxy flushes to latest wrapped segment version

* make vector deletetion a CoW operation

* relax debug assertions

* Update lib/shard/src/proxy_segment/mod.rs

* fix test_partial_snapshot_empty

---------

Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Tim Visée <tim+github@visee.me>
2025-10-08 00:19:41 +02:00
Arnaud Gourlay
a0645c7319 Use AHash for ShardId HashMap (#7357) 2025-10-07 12:11:53 +02:00
Andrey Vasnetsov
96821e0376 edge retrieve api (#7344)
* refactor: move RecordInternal into Shard crate

* refactor: move retrieve_blocking into Shard crate

* implement retrieve method + move some structures into dedicated files
2025-10-06 19:59:43 +02:00
Luis Cossío
33bd50e72d Change score of query-less prefetch to 1.0 (#7347) 2025-10-06 14:47:15 -03:00
Roman Titov
1004b93ae5 Python bindings for Qdrant on Edge (#7312)
* Qdrant Edge Python binding 🐍⛓️💥

* fixup! Qdrant Edge Python binding 🐍⛓️💥

Fix example + cleanup

* review: move QueryEnum + mark search as deprecated

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2025-10-03 12:48:26 +02:00
Arnaud Gourlay
ce16b27b41 Tone down optimizer logging (#7337) 2025-09-30 16:12:16 +02:00
dependabot[bot]
ae42fee8c1 build(deps): bump object_store from 0.12.3 to 0.12.4 (#7331)
Bumps [object_store](https://github.com/apache/arrow-rs-object-store) from 0.12.3 to 0.12.4.
- [Changelog](https://github.com/apache/arrow-rs-object-store/blob/main/CHANGELOG-old.md)
- [Commits](https://github.com/apache/arrow-rs-object-store/compare/v0.12.3...v0.12.4)

---
updated-dependencies:
- dependency-name: object_store
  dependency-version: 0.12.4
  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>
2025-09-30 14:26:08 +02:00
xzfc
23a0a0e8b8 DiffConfig: replace serde-based impl with explicit impl (#7294)
* refactor: replace serde-based DiffConfig implementation with macro

* refactor: macroexpand impl_diff_config

* refactor: drop `merge` dependency as unused
2025-09-29 18:55:50 +00:00
xzfc
780d406ff8 Add CollectionInfo::warnings field (#7293)
* refactor: swap DiffConfig parmeters

was: diff.update(&config)
now: config.update(diff)

* refactor: introduce DiffConfig::update_opt

* feat: add CollectionInfo::configuration_status field

* rename ConfigurationStatus to CollectionWarning
2025-09-29 18:17:03 +00:00
Roman Titov
895318913a Qdrant on Edge prototype (#7170) 2025-09-29 15:01:44 +02:00
xzfc
a0d62330c7 Use fs-err (#7319) 2025-09-29 12:47:10 +00:00
Andrey Vasnetsov
7d7f8a3118 Use former scroll_lock to prevent parallel updates during snapshot (#7306)
* separate snapshot-related functions into a new file

* move out snapshot-related function in local shard

* move snapshot test to local shard level

* move snapshot_all_segments and proxy_all_segments_and_apply to local shard

* use former scroll update lock to prevent snapshot operations overlapping with updates

* review fixes: rename all scroll_lock, use write lock for unproxy instead of read
2025-09-25 17:10:43 +02:00
Ivan Boldyrev
ad31c428e3 Fix Tokio race condition in benchmarks (#7311)
Shutdown `shard` explicitly at the end of benchmark to avoid error

```
A Tokio 1.x context was found, but it is being shutdown.
```

Co-authored-by: Ivan Boldyrev <ivan.boldyrev@qdrant.com>
2025-09-25 16:06:19 +02:00
Arnaud Gourlay
688651bacc Fix corruption due to concurrent update during snapshot (#7298) 2025-09-24 14:59:13 +02:00
Andrey Vasnetsov
38c394d4f4 log requests by type (#7292)
* store slow request log per request type

* filter by request name in API

* review fixes
2025-09-23 17:01:42 +02:00
Arnaud Gourlay
04d8d05aa5 Fix deadlock on Actix RT in Collection Info (#7277) 2025-09-22 11:14:27 +02:00
Andrey Vasnetsov
e86d60e6b0 slow requests log (#7188)
* wip: generalization trait for queries

* implement generalization for point operations

* fmt

* log priority queue

* wip: SlowRequestsListener

* fmt

* fix clippy

* simplify generalization

* fmt

* implement collection of requests profiles for update API

* implement API for viewing slow requests log

* add collection name to update worker

* add datetime to log

* fmt

* probabilistic counter of unique requests

* rename

* compute hash before converting into json value

* move logable out of generalizable

* fmt

* log query request

* fmt

* some fixes

* move measurement into local shard

* fmt

* upd openapi (not important)

* For enum variants, has discriminant

* Make SearchParams Copy

* Hash 0.0 and -0.0 the same

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

* Correctly hash enum variants and float values

* Hash through ordered float instead

* Fix priority queue not keeping longest request for hash

* SearchParams implements Copy

* Fix clippy warning

* Add unordered_hash_unique

* skip serialization if none

* Use OrderedFloat for hashing a float

* Use OrderedFloat for hashing a float

* only log updates if they are performed

---------

Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Tim Visée <tim+github@visee.me>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: xzfc <xzfcpw@gmail.com>
2025-09-19 19:59:25 +02:00
Tim Visée
ca7a8cc275 In optimizer, show bytes available/needed in human readable format (#7273)
* In optimizer, show bytes available/needed in human readable format

* Bytes as usize
2025-09-19 13:29:21 +02:00
xzfc
22df6bc30a Integrate hnsw_with_vectors (#7232)
* StorageGraphLinksVectors::try_new, make GraphLinksVectorsLayout non-fallible

* Integrate hnsw_with_vectors

* remove unused function

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2025-09-18 17:36:48 +00:00
Arnaud Gourlay
f66dc31452 Fix deadlock on Actix RT in Cluster Info (#7267) 2025-09-17 15:54:11 +02:00
Arnaud Gourlay
5238d16909 Fix deadlock on Actix RT in Telemetry (#7265)
* Deadlock on Actix RT

* Spawn blocking task for sync lock
2025-09-17 10:57:00 +02:00
Andrey Vasnetsov
bff9cb1a50 fix strict mode validation for nested filters (#7264)
* fix strict mode validation for nested filters

* fix test
2025-09-16 12:03:54 +02:00
dependabot[bot]
2dad465ef1 build(deps): bump actix-files from 0.6.7 to 0.6.8 (#7262)
Bumps [actix-files](https://github.com/actix/actix-web) from 0.6.7 to 0.6.8.
- [Release notes](https://github.com/actix/actix-web/releases)
- [Changelog](https://github.com/actix/actix-web/blob/v0.6.8/CHANGES.md)
- [Commits](https://github.com/actix/actix-web/compare/v0.6.7...v0.6.8)

---
updated-dependencies:
- dependency-name: actix-files
  dependency-version: 0.6.8
  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>
2025-09-16 09:29:42 +02:00
Arnaud Gourlay
360d7bc26d Clippy 1.90 (#7253)
* Fix Clippy 1.90

* fmt
2025-09-15 20:12:11 +02:00
Arnaud Gourlay
de19cb442e Fix non visible points during snapshots (#7248)
* Fix non visible points during snapshots

* Update lib/shard/src/segment_holder/mod.rs

Co-authored-by: Tim Visée <tim+github@visee.me>

* code review from mr.rabbit

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2025-09-12 18:40:09 +02:00
Tim Visée
160becbb46 Remove vectors_count (#7244)
* Remove deprecated vectors count from collection info

* Remove vectors count from shard info

* Update OpenAPI and gRPC spec

* Remove vectors count from example
2025-09-12 14:40:24 +02:00
Arnaud Gourlay
04d1c194e6 Fix RecommendExample conversion to support new format (#7234) 2025-09-11 17:36:29 +02:00
Roman Titov
a3ce716590 Fix deadlock during streaming shard snapshot (#7241)
* Add `test_shard_snapshot_deadlock` integration test

* Fix deadlock during streaming shard snapshot
2025-09-11 14:55:03 +02:00
xzfc
3c9e36fa0b Limit concurrent calls to load_segment (#7233)
* Limit concurrent calls to `load_segment`

* Use StreamExt::buffer_unordered
2025-09-11 13:57:24 +02:00
xzfc
e5546dc385 Fix: config mismatch optimizer trigger loop (#7242) 2025-09-11 10:36:47 +02:00
Arnaud Gourlay
a45897568d Fix missing REST API validations misc. (#7220)
* Fix missing REST API validations misc.

* add validation for deleted_threshold

* backport vacuum_min_vector_number validation from gRPC
2025-09-08 12:48:14 +02:00
Arnaud Gourlay
dd30fce77f Fix missing REST API Filter validations (#7218) 2025-09-05 13:53:18 +02:00
Andrey Vasnetsov
852c58e689 make sure that grpc::Vector can always use new format (#7185)
* make sure that grpc::Vector can always use new format

* specify target version for ToDo

* Update lib/api/src/conversions/vectors.rs

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2025-09-05 13:13:06 +02:00
Andrey Vasnetsov
b39ff122fa refactor matrix api to use query instead of deprecated search (#7215) 2025-09-04 21:19:35 -04:00
Arnaud Gourlay
83da3c4ee7 Bump http 0.2.12 (#7212)
* Bump http 0.2.12

* remove unused deps
2025-09-04 15:48:17 +02:00
Arnaud Gourlay
da44fc00af Remove assertions for deleted version when propagating deletes (#7162) 2025-09-04 15:34:40 +02:00