Commit Graph

3618 Commits

Author SHA1 Message Date
Arnaud Gourlay
bf8e86fb66 Add debug assertion for deleted version on proxy (#7300)
* Fix applying stale delete operation on proxy

* correct init of flag

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

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

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

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

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

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

* rollback unecessary check

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2025-09-24 15:01:13 +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
dependabot[bot]
ae0e4e4305 build(deps): bump anyhow from 1.0.99 to 1.0.100 (#7287)
* build(deps): bump anyhow from 1.0.99 to 1.0.100

Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.99 to 1.0.100.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.99...1.0.100)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-version: 1.0.100
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Inline formatting argument

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: timvisee <tim@visee.me>
2025-09-23 10:30:52 +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
Arnaud Gourlay
8a31160297 Always run Telemetry on a blocking thread (#7269)
* Always run Telemetry on a blocking thread

* run Telemetry on general runtime instead of the blocking Actix one

* Polish test
2025-09-19 10:28:09 +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
6b87d5d670 Bump shaderc 0.10.1 (#7266) 2025-09-17 11:49:44 +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
Arnaud Gourlay
e79100a2f2 Fix phrase match to not match with unknown tokens (#7252)
* Fix phrase match to not match with unknown tokens

* add tests

* spelling
2025-09-16 11:16:17 +02:00
Andrey Vasnetsov
dbe71d44a8 Fix missing flush, flush before sync (#7263)
* add missed flush buffer

* For all BufWriters, wrap owned type and explicitly flush

---------

Co-authored-by: timvisee <tim@visee.me>
2025-09-16 10:34:12 +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
dependabot[bot]
eae65547b7 build(deps): bump serde-untagged from 0.1.8 to 0.1.9 (#7257)
Bumps [serde-untagged](https://github.com/dtolnay/serde-untagged) from 0.1.8 to 0.1.9.
- [Release notes](https://github.com/dtolnay/serde-untagged/releases)
- [Commits](https://github.com/dtolnay/serde-untagged/compare/0.1.8...0.1.9)

---
updated-dependencies:
- dependency-name: serde-untagged
  dependency-version: 0.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>
2025-09-16 09:28:29 +02:00
Arnaud Gourlay
360d7bc26d Clippy 1.90 (#7253)
* Fix Clippy 1.90

* fmt
2025-09-15 20:12:11 +02:00
Arnaud Gourlay
bc13f01680 [strict-mode] Add max number of payload index count (#7222)
* [strict-mode] Add max number of payload index count

* improve docs and validation for StrictModeConfig

* fix from coderabbit

* test blocking access to payload indexes

* polish test
2025-09-15 13:12:40 +02:00
Kyamran
4c4a7cdbfd Add unified raft version (#7251) 2025-09-15 11:08:26 +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
Tim Visée
b29e59a871 Better immutable ID tracker load errors (#7240)
* Construct proper error when reading immutable ID tracker mapping fails

* Use new error builder for other use case too

* Even better error messages
2025-09-10 17:50:35 +02:00
dependabot[bot]
f833e10dd5 build(deps): bump thread-priority from 2.1.0 to 3.0.0 (#7225)
Bumps [thread-priority](https://github.com/iddm/thread-priority) from 2.1.0 to 3.0.0.
- [Release notes](https://github.com/iddm/thread-priority/releases)
- [Changelog](https://github.com/iddm/thread-priority/blob/master/CHANGELOG.md)
- [Commits](https://github.com/iddm/thread-priority/commits/v3.0.0)

---
updated-dependencies:
- dependency-name: thread-priority
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-09 10:24:18 +02:00
Arnaud Gourlay
c05df46d8e Fix missing gRPC API validations for PointsSelector (#7221) 2025-09-08 17:01:09 +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
Jojii
1e1d683391 Bump segment version on {delete,update,upsert}-by-filter requests (#7157)
* Bump segment versions on *-by-filter operations to acknowledge WAL

* Assert exactly one segment with the new operation version

* Review remarks

* Separate segment version number to not affect partial snapshots

* Adjust unit test

* Remove old bump_segment_version implementations

* Clarify max_persisted_segment_version_overwrite in flush_all

* Move trait implementations - Clippy

* Apply segment bumping to all *-by-filter functions

* Remove AtomicOptionU64

* Update function name and comments

* Remove max condition, start with overwrite value

* Add assertion, can never have zero segments

* Make max_persisted_segment_version_overwrite monotonic with fetch_max

---------

Co-authored-by: timvisee <tim@visee.me>
2025-09-05 14:29:14 +02:00
Arnaud Gourlay
dd30fce77f Fix missing REST API Filter validations (#7218) 2025-09-05 13:53:18 +02:00
Arnaud Gourlay
3420311fd7 Fix missing API validation for MinShould (#7217) 2025-09-05 13:16:09 +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
Tim Visée
e1a9cb57ca Add comment on why we do/don't share deleted points in proxies (#7209) 2025-09-04 14:27:28 +02:00
Tim Visée
ac1914227f Unit test with proxy that propagates older delete to wrapped segment (#7208)
* Add unit test with proxy that propagates older delete to wrapped segment

* Link to pull request

* Disable faulty debug assertion, replace with comment noting semantics

* Minor tweaks

* Point version check in optimizer makes sense, assert no double segment
2025-09-04 14:25:48 +02:00
xzfc
3baa7d9d7d HNSW: use new graph format during search (#7195)
* point_scorer: generic `Filters` -> non-generic `ScorerFilters`

point_scorer: rename FilteredQuantizedScorer -> FilteredBytesScorer

* Use ScorerFilters when appropriate

* {CustomQueryScorer,MetricQueryScorer}: SupportsBytes = True

* Add GraphLayersWithVectors::search_with_vectors

* Use GraphLayersWithVectors::search_with_vectors in HNSWIndex::search_with_graph

* Move `BoxCow` and `SimpleCow` to a common module

* Review remarks
2025-09-04 11:48:26 +00:00
xzfc
193306f2d7 Fixup remaining PeerId anonymization (#7207) 2025-09-04 09:54:39 +02:00
Ivan Pleshkov
33837423e9 Enable BQ in appendable segments (#7145)
* Create and load for an appendable quantization

remove feature flag

more todo

review remarks

review remarks

* fix after rebase

* Enable BQ in appendable segments

* remove const placeholder

* fix after rebase

* fix after rebase

* fix config mismatch optimizer

* fix sq infinity loop

* add comment
2025-09-03 13:56:32 +02:00
Roman Titov
6cb54ca380 Use Path instead of str in ConsensusWal::new (#7205) 2025-09-03 11:21:53 +02:00
xzfc
1e4a39a5a0 CompressedWithVectors: include base/full vectors (#7171)
* Add VectorStorageEnum::{get_vector_bytes_opt, get_vector_layout}

* Update CompressedWithVectors format to include base vectors

* StorageGraphLinksVectors

* Clarify code
2025-09-03 07:28:28 +00:00
Arnaud Gourlay
74a37e56be Fix scroll lock ordering (#7203) 2025-09-02 13:28:21 +02:00
dependabot[bot]
db9b29aed9 build(deps): bump procfs from 0.17.0 to 0.18.0 (#7200)
Bumps [procfs](https://github.com/eminence/procfs) from 0.17.0 to 0.18.0.
- [Release notes](https://github.com/eminence/procfs/releases)
- [Commits](https://github.com/eminence/procfs/compare/v0.17.0...v0.18.0)

---
updated-dependencies:
- dependency-name: procfs
  dependency-version: 0.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-02 13:20:16 +02:00
Arnaud Gourlay
60de32949e Chain nested locks for proxy segments (#7196)
* Chain nested locks for proxy segments

* Remove get_cloned function on locked segment

---------

Co-authored-by: timvisee <tim@visee.me>
2025-09-02 12:54:12 +02:00
dependabot[bot]
d313d3c73c build(deps): bump geo from 0.30.0 to 0.31.0 (#7199)
Bumps [geo](https://github.com/georust/geo) from 0.30.0 to 0.31.0.
- [Changelog](https://github.com/georust/geo/blob/main/CHANGES.md)
- [Commits](https://github.com/georust/geo/compare/geo-0.30.0...geo-0.31.0)

---
updated-dependencies:
- dependency-name: geo
  dependency-version: 0.31.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-02 12:13:43 +02:00
dependabot[bot]
1985a15432 build(deps): bump actix-files from 0.6.6 to 0.6.7 (#7198)
Bumps [actix-files](https://github.com/actix/actix-web) from 0.6.6 to 0.6.7.
- [Release notes](https://github.com/actix/actix-web/releases)
- [Changelog](https://github.com/actix/actix-web/blob/v0.6.7/CHANGES.md)
- [Commits](https://github.com/actix/actix-web/compare/v0.6.6...v0.6.7)

---
updated-dependencies:
- dependency-name: actix-files
  dependency-version: 0.6.7
  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-02 12:06:48 +02:00
Ivan Pleshkov
2d1b92c16b Create and load for an appendable quantization (#7193)
* Create and load for an appendable quantization

remove feature flag

more todo

review remarks

review remarks

* fix after rebase

* Rename is_appendable to supports_appendable

---------

Co-authored-by: timvisee <tim@visee.me>
2025-09-01 15:49:09 +02:00