Commit Graph

3618 Commits

Author SHA1 Message Date
Andrey Vasnetsov
eefcdcb8bf CoW defines flush topology (#7850)
* CoW defines flush topology

* add explicit logging for staging builds

* clippy

* partial cleanup of topology after flush

* Complete comment

* Format remaining segments in debug assertion

* fix typo

* clarify comment

* Fix comment

* Minor tweaks

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2026-01-08 15:38:48 +01:00
Arnaud Gourlay
e62d447ef5 Always capture segments flusher first for consistency (#7882) 2026-01-08 11:50:30 +01:00
Andrey Vasnetsov
5d63383888 extend WAL retention if some other replicas are dead (#7834)
* extend WAL retention if some other replicas are dead

* use merged WAL commit

* Handle ManualRecovery state

---------

Co-authored-by: KShivendu <kshivendu1@gmail.com>
2026-01-07 15:55:13 +05:30
Luis Cossío
0c1917b4ae Give lower probability to rare operations (#7876) 2026-01-06 17:14:15 -03:00
xzfc
08ddcd0d0f Remove ProgressState::Skipped (#7873) 2026-01-06 19:30:25 +01:00
Andrey Vasnetsov
843f88de9f remove rocksdb from creating snapshots path (#7854)
* remove rocksdb from creating snapshots path

* disable rocksdb in tests

* disable rocksdb in tests

* fix clippy

* fmt

* fix clippy again

* less default payload storage types

* fix another test, which assumed rocksdb
2026-01-06 17:51:39 +01:00
dependabot[bot]
08785c5751 build(deps): bump self_cell from 1.2.1 to 1.2.2 (#7859)
Bumps [self_cell](https://github.com/Voultapher/self_cell) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/Voultapher/self_cell/releases)
- [Commits](https://github.com/Voultapher/self_cell/compare/v1.2.1...v1.2.2)

---
updated-dependencies:
- dependency-name: self_cell
  dependency-version: 1.2.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-01-06 07:42:18 +01:00
Kumar Shivendu
73eab2c378 Handle operations when having no shards with custom sharding (#7856)
* Handle operations when having no shards with custom sharding

* Return error instead of acknowledge

* fmt

* clippy

* shorter msg

* Return collection payload schema if exists even without any shards

* minor clippy fix
2026-01-06 10:37:51 +05:30
dependabot[bot]
df23e8ad62 build(deps): bump serial_test from 3.2.0 to 3.3.1 (#7863)
Bumps [serial_test](https://github.com/palfrey/serial_test) from 3.2.0 to 3.3.1.
- [Release notes](https://github.com/palfrey/serial_test/releases)
- [Commits](https://github.com/palfrey/serial_test/compare/v3.2.0...v3.3.1)

---
updated-dependencies:
- dependency-name: serial_test
  dependency-version: 3.3.1
  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>
2026-01-05 20:39:15 +01:00
Kumar Shivendu
f00a69df4b Fix total count in replicate points progress tracker (#7857)
* Fix total count in replicate points progress tracker

* clippy
2026-01-06 00:57:25 +05:30
Andrey Vasnetsov
9c5cec1b87 restore snapshot in edge (#7852)
* Restore shard snapshot in Edge python bindings

* method to request snapshot manifest

* move snapshot manifest into Shard crate

* move shapshot manifest reading

* implement inplace update of the shard from snapshot

* fmt

* move shapshot-related functions again, into a dedicated struct

* fmt

* implement partial snapshot recovery for edge

* test for partial recoverying snapshot on edge
2026-01-05 19:33:30 +01:00
xzfc
f1ee3895b6 Safe delete (#7830)
* Replace `Option<Segment>` with `enum LoadSegmentOutcome`

* Replace some Path/PathBuf with str/String

* Rename field Segment::{current_path -> segment_path}

* safe_delete
2026-01-05 08:54:29 +00:00
tellet-q
c0b70f1eae Add a test for recovery after kill during Partial (#7762)
* Add a test for recovery after kill during Partial

* Address AI review

* simplify test

* Merge pull request #7829

* introduce a new state

* switch to ManualRecovery for user-initiated snapshot operations

* fmt

* fix test and regen api

* test fix: instead of force recovery on update failed snapshots now re…

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2026-01-02 14:33:47 +01:00
Andrey Vasnetsov
dba26be155 Merge pull request #7835
* alt api key

* rm typo

* fix key length check logic

* differnt dirs for tests

* fix tests

* rm unused
2026-01-02 13:18:53 +01:00
dependabot[bot]
81102d18bd build(deps): bump object_store from 0.12.4 to 0.13.0 (#7841)
* build(deps): bump object_store from 0.12.4 to 0.13.0

Bumps [object_store](https://github.com/apache/arrow-rs-object-store) from 0.12.4 to 0.13.0.
- [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.4...v0.13.0)

---
updated-dependencies:
- dependency-name: object_store
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

* Add trait imports

---------

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>
2026-01-02 12:33:31 +01:00
dependabot[bot]
ff2ea35aca build(deps): bump arc-swap from 1.7.1 to 1.8.0 (#7847)
Bumps [arc-swap](https://github.com/vorner/arc-swap) from 1.7.1 to 1.8.0.
- [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vorner/arc-swap/compare/v1.7.1...v1.8.0)

---
updated-dependencies:
- dependency-name: arc-swap
  dependency-version: 1.8.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>
2026-01-02 11:36:59 +01:00
Roman Titov
d70ca93728 Add explicit SharedShardHolder type instead of LockedShardHolder type-alias (#7837) 2025-12-30 12:35:43 +01:00
Luis Cossío
b44596f477 allow collection-level jwt access (#7758) 2025-12-29 14:29:02 -06:00
Luis Cossío
5cd0fe3b5a filter collections during telemetry collection (#7757) 2025-12-29 09:39:23 -06:00
Luis Cossío
85a5b61b98 [cluster telemetry] Expose endpoint (#7729)
* expose cluster telemetry endpoint

* add endpoint to openapi

* add jwt test

* remove dead_code expectation

* fix consistency check

* fix jwt access test

* use response(reference(..)) in openapi
2025-12-29 09:37:38 -06:00
Luis Cossío
8ab86b6736 [cluster telemetry] Internal telemetry endpoint (#7672)
* move QdrantInternalService to its own file

* implement internal telemetry endpoint

cleaner diff on src/main.rs

upd response in proto

* use try_from conversion

* rename request/response in proto
2025-12-23 11:32:44 -06:00
Luis Cossío
64c806d8aa [cluster telemetry] Internal service conversions (#7631)
* implement conversions

* clippy

* rename `ReshardStage` -> `ReshardingStage`

* impl conversions to grpc

* upd response in proto

* convert TelemetryData

* add peer info

* upd openapi

* add conversion from TelemetryData to PeerTelemetry

* review nit

* re-style

* make `method` optional

* change comments to reference `ReshardingStreamRecords`

* missing nits
2025-12-23 11:00:25 -06:00
dependabot[bot]
d32849d154 build(deps): bump roaring from 0.11.2 to 0.11.3 (#7826)
Bumps [roaring](https://github.com/RoaringBitmap/roaring-rs) from 0.11.2 to 0.11.3.
- [Release notes](https://github.com/RoaringBitmap/roaring-rs/releases)
- [Commits](https://github.com/RoaringBitmap/roaring-rs/compare/v0.11.2...v0.11.3)

---
updated-dependencies:
- dependency-name: roaring
  dependency-version: 0.11.3
  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-12-22 21:37:29 +01:00
Tim Visée
5ae5f65e18 Use RwLock in flushers, drop is alive lock early (#7811)
* Use RwLock for pending changes in MmapBitSliceBufferedUpdateWrapper

* Use RwLock for pending operations in DatabaseColumnScheduledDeleteWrapper

* Use RwLock for pending updates in DatabaseColumnScheduledUpdateWrapper

* Drop alive guard before reconciliation, we don't touch files after

* Remove redundant clone

* Update comments
2025-12-22 16:09:10 +01:00
Arnaud Gourlay
3f6aae9671 More segments lock timeout on read (#7802) 2025-12-19 13:23:52 +01:00
Tim Visée
9296874f9b Bump dev version to 1.16.4-dev (#7807) 2025-12-19 13:23:40 +01:00
Roman Titov
c8cf8f3559 Replace lazy_static with std::sync::LazyLock (#7808) 2025-12-19 13:22:00 +01:00
Tim Visée
e9818cab70 Fix reconciliation in more flushers (#7805)
* Reconcile BufferedDynamicFlags flusher

* Reconcile DatabaseColumnScheduledDeleteWrapper flusher

* Rename function for consistency
2025-12-19 12:14:29 +01:00
Tim Visée
ecf6554261 Switch to drain, it is simpler and recommended by docs (#7803) 2025-12-19 11:38:30 +01:00
Luis Cossío
c619cb233f Clone pending updates in buffered storages (#7801)
* in MmapSliceBufferedUpdateWrapper

* in MmapBitsliceBufferedUpdateWrapper

* in MutableIdTracker's versions updates

* in MutableIdTracker's mapping updates

* clone updates only when non-empty

* only lock for reconciling pending changes

* simpler reconciling

* use Mutex as argument to ensure we only lock within reconciliation
2025-12-18 12:15:16 -06:00
Tim Visée
2da336e192 Add some context to background flush error propagation (#7800) 2025-12-18 17:13:56 +01:00
Tim Visée
4a1103acb7 Revert "return an error when cancelling a flush (#7781)" (#7799)
This reverts commit 2f443ec055.
2025-12-18 16:45:30 +01:00
Kyamran
359c229cfe Replace --all to --workspace (#7797) 2025-12-18 14:44:56 +00:00
Ivan Pleshkov
c14f83eff9 use enum for SQ query and meta (#7669)
fix CI

review remarks

review remarks

review remarks

review remarks

simplify encoding of internal vector

fix ci

fix ci

review remarks

review remarks
2025-12-17 22:35:14 +01:00
Arnaud Gourlay
788f5e7fca SegmentSearcher times out on lock contention (#7755) 2025-12-17 16:54:15 +01:00
Roman Titov
3c2bf8b116 Fix CI 😬 (#7796) 2025-12-17 15:11:08 +01:00
Luis Cossío
2f443ec055 return an error when cancelling a flush (#7781)
* return an error when cancelling a flush

* fix test

* less verbosity
2025-12-17 10:21:20 -03:00
Roman Titov
8f7aa023db Qdrant Edge Python release CI workflow (#7562) 2025-12-17 14:19:26 +01:00
tellet-q
0ad86c71d4 Init snapshot metrics on collection creation (#7788) 2025-12-17 13:47:10 +01:00
Arnaud Gourlay
2e66577148 Gridstore noisy log into assert (#7795) 2025-12-17 13:46:44 +01:00
Tim Visée
019632332d Add test for broken WAL delta after stream records abort (#7787)
* Add test to reproduce broken WAL delta after aborting stream records

* Add staging env var to slow down stream records transfers for test

* Tweak test formatting and utilities a bit

* Add comment to test, link to PR describing bug

* Update test so it still succeeds with patched behavior

* Fix broken WAL delta after stream records abort (#7791)

* Make set_replica_state async

* Add function called when active state of local replica changes

* Add snapshot for newest clocks

* Bump newest clocks snapshot on replica deactivation

* Use newest clocks snapshot during recovery

* Add enum for specifying whether to take or clear clocks snapshot

* Store clock snapshot inside clock map, removing extra file

This greatly simplifies state handling. It also prevent any kind of
desynchronization because all newest clocks are always persisted
atomically.

* Immediately persist clocks after taking snapshot

* Always update snapshot, only take if missing

* Take clock snapshots through each shard flavor, including proxies

* Propagate dedicated functions for taking and clearing clocks snapshot

* Only persist clocks immediately if changed on snapshot/clear

* Simplify recovery point logic, always take clocks snapshot if exists

* Remove unwrap

* Fix typo

* Fix doc comment

* Transfer driver is async, use Tokio sleep

* Reduce visibility
2025-12-17 12:33:00 +01:00
Andrey Vasnetsov
a95587cb0c Fix unrelated transfer cancellation (#7792)
* easy fix with version check

* Link to PR

* Fix get transfers with source/target pairs, also fix dead replica aborts

* Use new source/target functions elsewhere

* Flip shard and peer arguments

* Fix incorrect check, from should be to

* Inline more format arguments

---------

Co-authored-by: timvisee <tim@visee.me>
2025-12-17 12:25:50 +01:00
Arnaud Gourlay
5175d9f64a Enrich Gridstore model testing (#7789)
* Enrich Gridstore model testing

* better

* no clear on Windows

* less windows

* sigh

* change strategy

* never give up

* x100 scale down for Windows

* last touch

* decrease for others too

* remove Iter test - the quadratic cost is not worth it

* Revert "remove Iter test - the quadratic cost is not worth it"

This reverts commit f0e98cb33b.

* try with limited Iter

* less logging as it is hurting crasher

* tracker.mapping_len() is slow

* hard limit good enough for now
2025-12-17 11:55:27 +01:00
xzfc
d093bd97ce Re-style .proto files (#7475)
* proto: doc comment style

* proto: clang-format

* proto: manually reflow some comments

* proto: proofread
2025-12-16 22:22:54 +00:00
xzfc
709a3b98a5 Optimization panic status cleanup (#7783) 2025-12-16 19:24:07 +00:00
xzfc
97fa802e10 Register trackers only after successfull start (#7766) 2025-12-16 19:38:55 +01:00
Luis Cossío
e1b38e1723 [feedback query] Rename to Naive strategy (#7756)
* Rename to `Naive` strategy. Remove generic `TStrategy`

* refactor in async_raw_scorer too

* review nit
2025-12-16 15:17:25 -03:00
Luis Cossío
a89f309645 new GridstoreError (#7780)
* create GridstoreError

* review nit
2025-12-16 12:04:25 -03:00
dependabot[bot]
260b68fbdb build(deps): bump ndarray from 0.16.1 to 0.17.1 (#7772)
* build(deps): bump ndarray from 0.16.1 to 0.17.1

Bumps [ndarray](https://github.com/rust-ndarray/ndarray) from 0.16.1 to 0.17.1.
- [Release notes](https://github.com/rust-ndarray/ndarray/releases)
- [Changelog](https://github.com/rust-ndarray/ndarray/blob/master/RELEASES.md)
- [Commits](https://github.com/rust-ndarray/ndarray/compare/0.16.1...0.17.1)

---
updated-dependencies:
- dependency-name: ndarray
  dependency-version: 0.17.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

* bump ndarray-npy as well

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
2025-12-16 15:28:36 +01:00
Arnaud Gourlay
c01813f668 Notify optimization handles to stop on shard drop (#7765) 2025-12-16 11:13:15 +01:00