Commit Graph
100 Commits
Author SHA1 Message Date
Tim Visée 07f12e1277 Fix optimizer error if segment is already under optimization (#7960) 2026-02-09 23:19:45 +01:00
Tim Viséeanddependabot[bot] 8961bce715 build(deps): bump rsa from 0.9.8 to 0.9.10 (#7878)
Bumps [rsa](https://github.com/RustCrypto/RSA) from 0.9.8 to 0.9.10.
- [Changelog](https://github.com/RustCrypto/RSA/blob/v0.9.10/CHANGELOG.md)
- [Commits](https://github.com/RustCrypto/RSA/compare/v0.9.8...v0.9.10)

---
updated-dependencies:
- dependency-name: rsa
  dependency-version: 0.9.10
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-09 22:46:08 +01:00
Tim Visée feff43f477 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
2026-02-09 22:26:33 +01:00
Tim Visée f937d0260f Add security caution banner to quick start command (#7815)
* Show simple security banner in quick start guide

* Swap sentence

* Refer to new secure your instance section

* Shorten text to fit on single line
2025-12-24 10:59:03 +01:00
Tim Visée bd49f45a8a Bump version to 1.16.3 (#7806)
* Bump version to 1.16.3

* Update missed cherry picks
2025-12-19 13:23:30 +01:00
Tim Visée 1287d74026 Fix reconciliation in more flushers (#7805)
* Reconcile BufferedDynamicFlags flusher

* Reconcile DatabaseColumnScheduledDeleteWrapper flusher

* Rename function for consistency
2025-12-19 12:16:17 +01:00
Tim Visée 66d7022b25 Switch to drain, it is simpler and recommended by docs (#7803) 2025-12-19 12:16:17 +01:00
Tim Visée 457e710126 Add some context to background flush error propagation (#7800) 2025-12-18 17:29:24 +01:00
Tim Visée 66bc5524dc Revert "return an error when cancelling a flush (#7781)" (#7799)
This reverts commit 2f443ec055.
2025-12-18 17:29:24 +01:00
Tim Visée e35d452043 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-18 17:29:16 +01:00
b234b55a4c Migrate Python to uv (#7790)
* Move pyproject.toml to root

* Migrate pyproject.toml from Poetry to uv

* Update GH workflows

* Update test script, doc and nix to use uv

* Use latest uv

* Fix uv.lock

* Cleanup shell.nix

* Cleanup

- Explicit `uv sync` is not required, `uv run` will install deps
  automatically.
- We don't provide a python package, so the `[build-system]` section
  is not needed.

* Fix UV_VERSION inconsistency

---------

Co-authored-by: tellet-q <elena.dubrovina@qdrant.com>
Co-authored-by: xzfc <xzfcpw@gmail.com>
2025-12-18 17:28:50 +01:00
Tim ViséeandLuis Cossío 297d203dd9 Gridstore: split pointer updates set/unset, simplify draining (#7749)
* Separate set and unset lists for each Gridstore pointer update

This makes the list of pointer updates much easier to grasp. The
simplification is desired because this exact structure has been a cause
for bugs multiple times now.

* Add more aggressive debug assertions

* Use consistent terminology

* Correct removal of set

* Simplify drain function

* Add safe guard to ignore empty pointer updates

* Rework tracker getter, explicitly branch variants

* Patch transmute, require Sized type

* rename and adjust comments

- set/unset is now current/to_free
- adjusted descriptions and comments for this nomenclature too

* clippy

* clippyyy

not 4, not 2, but 3 spaces

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2025-12-18 17:27:43 +01:00
Tim Visée 9d48600acb Remove unused swap_existing function from segment holder (#7736) 2025-12-18 17:27:42 +01:00
Tim Visée be5fb4bdcd Fix Gridstore flushing, correctly implement drain persist (#7741)
* Fix Gridstore tracker drain and persist not working properly

* Patch existing test

* Add new test to assert buggy scenario we found

* Mention PR in test
2025-12-18 17:27:42 +01:00
Tim Visée 4c41e9c83a Fix flusher data race in Gridstore (#7702)
* Add lease structure to invalidate pending flushers after wipe/clear

* We don't use bitmask as barrier anymore

* Add missing early return

* Add test

* Replace flush lease with is alive boolean we also use elsewhere

* Reimplement test, now it does fail on the old implementation

* In test, cover both new fixed and old broken flushing

* Remove old test case because it is flaky

* Fix clippy

* Fix outdated comment
2025-12-18 17:27:20 +01:00
Tim ViséeandIvan Pleshkov 158eec84e6 Hotfix for Windows ARM64 builds, disable some Neon features (#7690)
* On Windows ARM64 builds, disable usage of neon

* Also disable optimized popcount on Windows ARM64

* fix quantization build

* revert changes in BQ

---------

Co-authored-by: Ivan Pleshkov <pleshkov.ivan@gmail.com>
2025-12-18 17:26:37 +01:00
Tim Visée 8b3c656ffb Include RocksDB features in Docker dev build (#7683)
* Include RocksDB features in Docker dev build

* Configure flags in a different way, without else branch
2025-12-18 17:25:41 +01:00
Tim Visée eaa9f4cc82 Bump version to 1.16.2 (#7680)
* Bump version to 1.16.2

* Update missed cherry picks
2025-12-03 11:34:59 +01:00
Tim Viséeand<jojii 6b86896751 Fix vector count in metrics showing minus zero (#7678)
Co-authored-by: <jojii <jojii@gmx.net>
2025-12-03 10:26:28 +01:00
Tim Visée 10cf439411 Fix shard clean up on snapshot restore without manifest (#7673)
* On local replica recovery, also gracefully stop shard without manifest

* Reformat
2025-12-03 10:24:02 +01:00
Tim Visée 52507c90c1 Bump wal to 0.1.4 (#7674) 2025-12-03 10:23:56 +01:00
Tim Viséeanddependabot[bot] ec0a3389f1 build(deps): bump werkzeug from 3.1.3 to 3.1.4 in /tests (#7671)
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/werkzeug/compare/3.1.3...3.1.4)

---
updated-dependencies:
- dependency-name: werkzeug
  dependency-version: 3.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-03 10:23:55 +01:00
Tim Visée 405415887c Automatically opt-out of multi-mmap support by testing support (#7618) 2025-12-03 10:23:55 +01:00
Tim Visée a34ffd1dc1 Add runtime flag to disable opening multiple mmaps on the same file (#7614)
* Fix delete_page not dropping sequential mmap

* In Gridstore Page, support using a single mmap

* In Gridstore Page, only open multiple mmaps if supported at runtime

* Support opening single mmap in UniversalMmapChunk

* Rename environment var, log warning when QDRANT_NO_MULTI_MMAP is set

* Support opening single mmap in MmapDenseVectors

* Remove unused result response

* Import LazyLock
2025-12-03 10:23:25 +01:00
Tim Visée f58f779b91 Add a user agent to HTTP clients (#7623)
* Add user agent to add HTTP clients

* Move user agent constant to defaults.rs
2025-12-03 10:18:53 +01:00
Tim Visée d25d877b3b Change minimum version for batch WAL transfer into constant (#7619) 2025-12-03 10:18:52 +01:00
Tim Visée b0202cd4b3 Disable RocksDB features in local development builds (#7552)
* Disable rocksdb compile time feature by default

* Also disable RocksDB feature in segment crate

* Enable RocksDB feature in all CI builds

* Remove extra job for testing non-RocksDB build, it's the default now

* Keep RocksDB structures in generated OpenAPI schema

* Fix obsolete --workspace flag breaking builds with explicit features

* Also build including RocksDB in e2e tests on CI
2025-12-03 10:17:54 +01:00
Tim Visée 25055e6297 Bump rocksdb dependency to 0.24.0 (#7605) 2025-12-03 10:17:41 +01:00
Tim Visée e293ab1f08 Fix cosign error on release image (#7606) 2025-11-25 16:58:56 +01:00
Tim Visée 4a66b7cf2b Bump version to 1.16.1 (#7603)
* Bump version to 1.16.1

* Update missed cherry picks
2025-11-25 14:59:57 +01:00
Tim Visée 745f0d6d15 Bump wal to fix flush problems (#7587) 2025-11-25 11:16:01 +01:00
Tim Visée a4dd7b3fce Fix WAL handling on consensus snapshot (#7577)
* After clearing WAL, flush segment

* Add debug log when WAL is cleared

* Clear WAL on consensus snapshot after writing state, truncate on start

* Apply consensus snapshot offset

* Fix off by one error

* Tweak debug assertion message

* Change WAL reconciliation condition, and fully clear WAL in this case

* Add debug assertion to prove Raft index and snapshot index are equal

* Add documentation to resolve bot nit

* Return error on WAL clear failure

* Fix typo

* Remove unused truncate functions
2025-11-25 11:16:01 +01:00
Tim Visée 8d3e7b3534 Fix panic on startup with old storage, reenable old shard key format (#7564)
* Revert "Remove old shard key mapping format (#7047)"

This reverts commit 783c128c1a.

This reverts pull request <https://github.com/qdrant/qdrant/pull/7047>.

* Bump TODOs
2025-11-25 11:15:22 +01:00
Tim Visée 8c73c3a794 Add deferred flusher to Gridstore (#7446)
* Wrap the tracker and bitmask in Arc

* Implement deferred flusher for gridstore, defer tracker writes

* Remove clone

* Dynamically adjust list of pending updates to drain what is flushed

* Return proper flusher, defer premature Gridstore flushing errors

* Use deferred Gridstore flusher across storages

* Remove all Arc<RwLock<_>> wrappers around Gridstore in storages

* Flush pages inside closure, also wrap them in a lock

* Remove direct flush function from Gridstore

* Add test to assert behavior of deferred flushing in Gridstore

* Add much more extensive test, including concurrent flushes and deletes

* Add test for draining value pointer, make sure to drop when flushed

* Feature gate RocksDB components
2025-11-25 11:15:16 +01:00
Tim ViséeandRoman Titov 5cfe7ee4ee Adjust log warning about trying to read lock a segment (#7556)
* Fix log warning about trying to read lock a segment

* Fix typo

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

---------

Co-authored-by: Roman Titov <ffuugoo@users.noreply.github.com>
2025-11-25 11:15:15 +01:00
Tim Visée 4da01d375d Actively migrate away from RocksDB for vector/payload storage and index (#7551)
* Actively migrate away from RocksDB for vector/payload storage and index

* Update OpenAPI spec
2025-11-25 11:15:15 +01:00
Tim Visée bdbbfcad15 Bump filter stream records minimum version to 1.16.0 (#7549) 2025-11-25 11:14:55 +01:00
Tim Visée 0d79528705 Bump version to 1.16.0 (#7535)
* Bump version to 1.16.0

* Update missed cherry picks

* Update redoc to 1.16.0
2025-11-17 12:10:37 +01:00
Tim Visée 6e11c74073 Audit all spawn blocking calls, prematurely abort them (#7533)
* Prematurely abort blocking task in `spawn_cancel_on_drop` on drop

These tasks are intended to be cancellable. Now we prematurely abort the
task if the future was dropped before the task is executed.

* Prematurely abort blocking task in `spawn_cancel_on_token` on cancel

These tasks are intended to be cancellable. Now we prematurely abort the
task if the cancellation token is triggered before the task is executed.

* Prematurely abort blocking task for fetching telemetry

* Prematurely abort stoppable task on drop, all are safe to abort early

* Make `move_dir` either move everything, or nothing at all

That is with the exception of file IO errors in which case data may be
partially moved.

Before this PR it was possible for the new target directory to be
created without moving all data into it. Now we either do all, or
nothing.

* Prematurely abort task for creating full snapshot

It is fine to either create it, or not at all.

* Prematurely abort blocking task for waiting on consensus leader

* Prematurely abort blocking cardinality estimation and shard info tasks

* Prematurely abort blocking point deduplication task

* Prematurely abort blocking task for checking available disk space

* Prematurely abort blocking shard read operations

All shard read operations, such as retrieve, scroll, facets and more can
be safely aborted prematurely.

Related to: <https://github.com/qdrant/qdrant/pull/7530>

* Prematurely abort blocking task for waiting on replica state

* Prematurely abort blocking task for waiting on transfer replica states

* Prematurely abort blocking task for loading segment

This can safely be aborted before the task is started

* Prematurely abort blocking task waiting for replica states

* Prematurely abort blocking task for creating snapshot file

Safe because it aborts before writing any snapshot files to disk
2025-11-14 13:31:04 +01:00
Tim Visée 4c10db4ba6 Abort pending blocking search tasks when we drop/invalidate the search (#7530)
* Cancel pending blocking search tasks when we drop/invalidate the search

* Mention PR with explanation in comment
2025-11-14 12:31:08 +01:00
Tim Visée ed99c3b15c Final metrics tweaks for Qdrant 1.16.0 (#7516)
* Add collections_vector_total metric for backwards compatibility

Only this metric was removed since Qdrant version 1.15.5, and so this
adds it back for backwards compatibility. Though it has been marked as
deprecated now.

* Prefix replica metrics with collection, part of collection namespace

* Count running optimizations per collection

* Remove deprecation flag

* Minor optimization, preallocate vectors
2025-11-14 12:31:06 +01:00
Tim ViséeandRoman Titov 49f6cc9c4c Fix hash ring initialization for custom sharding, prevent resharding panic (#7517)
* Correctly rebuild hash rings, don't use default with custom sharding

* Correctly initialize hash ring map with custom sharding

Don't load the non key ring by default

* Validate shard key for resharding more aggressively

When using auto sharding, require no shard key. When using custom
sharding, require a shard key.

* Only pass sharding method into shard holder construction

* Remove now obsolete debug assertion, we use same source config

* Correctly reconstruct hash rings, also add shard IDs in auto mode

* Add test, do not break consensus on invalid resharding down operation

* Add tests for resharding down shard count precondition

* Minor test tweaks

* Improve debug assertion

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

---------

Co-authored-by: Roman Titov <ffuugoo@users.noreply.github.com>
2025-11-14 12:31:06 +01:00
28a863509c In metrics, only show cumulative number of page faults (#7482)
* In metrics, aggregate page faults

* Include page fault of active children (recursively)

* type alias Pid: i32

* Code improvements

* Ignore already terminated processes

* Clippy

* Also count faults for joined descendant threads in children

* Import std::cmp::min

* Rework child fault recursion, remove second hash set

* Add simple test for iterating child processes

* Fix typo

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

* Use limit values directly

* We don't include the parent PID

* Don't allocate hashmap when listing process children

* Extend process child PIDs test, fork recursively

---------

Co-authored-by: jojii <jojii@gmx.net>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-11-14 12:31:06 +01:00
6b39ff1353 Add ReadActive replica state, use in some stream records transfers (#7474)
* Add ReadActive replica state

* Add consensus function to switch from Partial to ReadActive and confirm

* On stream records to a different shard ID, switch to ReadActive first

* Update OpenAPI spec

* In stream records peer sync, require all peers to be up-to-date

* Review fixes

* Rename ReadActive to ActiveRead

* update openapi spec

* explicit state checking functions

* typo

* update fallback routing with usage of a new state

---------

Co-authored-by: KShivendu <kshivendu1@gmail.com>
Co-authored-by: generall <andrey@vasnetsov.com>
2025-11-14 12:31:04 +01:00
Tim Visée 8977db33a2 Report max system wide mmap count in metrics (#7487) 2025-11-14 12:31:04 +01:00
Tim Visée bbb0a6838a In metrics, expose current thread count (#7484) 2025-11-14 12:31:03 +01:00
Tim Visée e88f36ac82 Various metrics tweaks (#7480)
* Change page fault metrics from gauges to counters

* Change collection_vectors_total to collection_vectors

* Rename metric for page faults in joined child processes

* Rename some procfs metrics

* Show single limit for number of open files

* For number of file descriptors and mmaps follow convential names

* Rename dead_shards_total to dead_replicas

* Fix metric prefix for gRPC entries, add missing underscore

A underscore was missing if no global prefix was set
2025-11-14 12:31:03 +01:00
Tim Visée a11954781a Bump MSRV to 1.89 (#7476) 2025-11-14 12:30:19 +01:00
Tim Visée 783c128c1a Remove old shard key mapping format (#7047)
* Remove old shard key mapping format variant

* Change single variant enum into tuple struct

* Remove migration logic for old to new shard key format
2025-11-14 12:30:16 +01:00
Tim Visée 2e239d5b58 Skip RocksDB for mutable payload index and payload storage (#7433)
* For mutable payload index, don't create with RocksDB anymore

* For payload storage, don't create with RocksDB anymore

* Add missing dot

* Update OpenAPI spec
2025-11-14 12:30:16 +01:00
Tim Visée 95ddb9477d Add repr(C) attribute to type used in MmapSlice (#7472) 2025-11-14 12:30:16 +01:00
Tim Viséeanddependabot[bot] c166d369a9 build(deps): bump starlette from 0.47.2 to 0.49.1 in /tests (#7470)
Bumps [starlette](https://github.com/Kludex/starlette) from 0.47.2 to 0.49.1.
- [Release notes](https://github.com/Kludex/starlette/releases)
- [Changelog](https://github.com/Kludex/starlette/blob/main/docs/release-notes.md)
- [Commits](https://github.com/Kludex/starlette/compare/0.47.2...0.49.1)

---
updated-dependencies:
- dependency-name: starlette
  dependency-version: 0.49.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-14 12:30:14 +01:00
Tim Visée 45a8cdcefc Access vector_data without risk of panicking (#7469)
* Get vector data checked to prevent panic

* Add invalid vector name error helper
2025-11-14 12:30:13 +01:00
Tim ViséeandArnaud Gourlay d50f7a2b7b Improved segment flush ordering (#7381)
* Re-sort segments on flush, don't use proxy but inner segment state

* Also sort segments when proxying all segments for snapshot

The snapshot operation explicitly flushes segments. We therefore must
satisfy flush ordering there too.

* Add some helpful comments

* Add explicit flush ordering enum for segments

* Minor tweaks

* Fix spelling in comment

Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>

---------

Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
2025-11-14 12:29:35 +01:00
Tim Visée 5e5e69795e Remove trailing whitespaces (#7435) 2025-11-14 12:29:35 +01:00
Tim Visée 09af2a94d2 Deduplicate iter_internal and iter_ids in ID trackers (#7428)
* Switch from iter_ids to iter_internal

* Remove iter_ids function

* Rename iter_ids_excluding to iter_internal_excluding
2025-11-14 12:29:35 +01:00
Tim Visée 0b2fb1d891 Flush segments after proxy (#7427) 2025-11-14 12:29:34 +01:00
Tim Visée 9216532f9b Minor Gridstore improvements (#7415)
* Explicitly use C memory representation for Gridstore value pointers

* Inline pure function

* Grow tracker file to be next multiple of two

* In debug builds, panic if getting out of bound point from Gridstore

* Also represent region gaps as C struct

* Remove debug assertion

* Adjust file size test
2025-11-14 12:29:33 +01:00
Tim Visée fb277d3eb5 Forbid peer to join cluster with URI that is already used (#7375)
* Disallow peer to join with URI that is already used

* Add test for rejecting peer join with duplicate URI

* Improve peer rejection logic

* Try to rejoin twice, we expect a consistent result
2025-11-14 12:28:15 +01:00
Tim Visée 726199e4ad In Gridstore, also populate the tracker file (#7385) 2025-11-14 12:28:14 +01:00
Tim Visée d72475f590 Only wait for green collection status in empty snapshot test (#7360) 2025-11-14 12:27:48 +01:00
Tim Visée 81674bbb74 Before doing actual partial snapshot tests, wait for green status (#7358) 2025-11-14 12:27:48 +01:00
Tim Visée 48203e414e Downgrade cargo-chef base image to fix runtime error on NVIDIA GPU image (#7334)
* Downgrade cargo-chef base image to fix runtime error on NVIDIA GPU image

* Add link to pull request
2025-09-30 11:28:29 +02:00
Tim Visée 64d63cc050 Bump version to 1.15.5 (#7323)
* Bump version to 1.15.5

* Update missed cherry picks
2025-09-29 17:05:49 +02:00
Tim Visée 00f1f5e728 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-29 11:31:11 +02:00
Tim Visée e1f1445af2 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-29 11:29:36 +02:00
Tim Visée ff818fff52 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-29 11:29:00 +02:00
Tim Visée 2b2e72f425 Add timeout param remove peer API (#7235)
* Describe cluster peer remove timeout parameter in OpenAPI spec

* Remove trailing spaces
2025-09-29 11:28:56 +02:00
Tim Visée 2f4e646022 Add comment on why we do/don't share deleted points in proxies (#7209) 2025-09-29 11:27:40 +02:00
Tim Visée 59dea2128c 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-29 11:27:40 +02:00
Tim Viséeanddependabot[bot] e7cc6b6b53 build(deps): bump tracing-subscriber from 0.3.19 to 0.3.20 (#7192)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.19 to 0.3.20.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.19...tracing-subscriber-0.3.20)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-version: 0.3.20
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 11:26:00 +02:00
Tim Visée a09d0588cf Revert "Fix flaky save_on_disk test race condition (#7126)" (#7182)
* Revert "Fix flaky save_on_disk test race condition (#7126)"

This reverts commit 80f0b53cea.

Related flakiness reports:
- https://github.com/qdrant/qdrant/issues/7156
- https://github.com/qdrant/qdrant/issues/7181

* Fix comment
2025-09-29 11:26:00 +02:00
Tim Visée 8bde87359d Use locked segment by reference without cloning Arc (#7176)
* Use locked segment by reference without cloning Arc

* Remove unnecessary clone

* Return list of lock references
2025-09-29 11:25:31 +02:00
Tim Visée 3ad5911634 Remove chunked mmap vectors mlock flag (#7165) 2025-09-29 11:24:57 +02:00
Tim Viséeanddependabot[bot] 292f07964b build(deps): bump h2 from 4.2.0 to 4.3.0 in /tests (#7167)
Bumps [h2](https://github.com/python-hyper/h2) from 4.2.0 to 4.3.0.
- [Changelog](https://github.com/python-hyper/h2/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/python-hyper/h2/compare/v4.2.0...v4.3.0)

---
updated-dependencies:
- dependency-name: h2
  dependency-version: 4.3.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 11:24:57 +02:00
Tim Visée 338cf704c4 Bump version to 1.15.4 (#7150)
* Bump version to 1.15.4

* Update missed cherry picks
2025-08-26 17:07:38 +02:00
Tim Visée c780d7557b In proxy segment, don't return deleted point versions (#7109)
* In proxy segment, don't return deleted point versions

More specifically, don't return a point version from the wrapped segment
if that point is already marked for deletion within the proxy.

* Do get wrapped segment point version if it's newer than soft delete

* Flatten function
2025-08-26 13:18:15 +02:00
Tim Visée c8d39583b6 Keep segment ID mapping when proxying all segments (#7106)
* When swapping existing segment, remove first to allow segment ID reuse

* Share original segment ID with proxies, keeps original mapping

* Add replace function, that directly replaces existing segment
2025-08-26 13:17:46 +02:00
Tim Visée 985bac2d34 Fix new shard crate always pulling in RocksDB dependencies (#7097) 2025-08-26 13:17:21 +02:00
Tim Visée a7d21f1680 Bump version to 1.15.3 (#7061)
* Bump version to 1.15.3

* Update missed cherry picks
2025-08-14 15:57:28 +02:00
Tim Visée d5b24911d5 Fix clippy warnings when compiling without RocksDB feature flag (#7059) 2025-08-14 14:30:40 +02:00
Tim Visée cfaab018e7 In payload indices, make storage non optional (#7041)
* Make numeric index storage non optional

* Make map index storage non optional

* Make full text index storage non optional

* Remove unnecessary option

* Make geo index storage non optional

* Make bool index storage non optional

* Remove unnecessary result

* Make null index storage non optional
2025-08-14 14:30:39 +02:00
Tim Visée a48e559990 Remove load function in payload indices (#7040)
* Remove load functions from numeric index

* Remove load functions from map index

* Remove unnecessary result and option

* Remove load functions from full text index

* Remove load functions from geo index

* Remove unnecessary result and option

* Remove load functions from bool index

* Remove load functions from null index

* Don't invoke load when loading payload indices, remove load from trait
2025-08-14 14:30:39 +02:00
Tim Visée 68825bfe6a Open and load bool payload indices in single stage (#7039)
* Open and load simple bool index in single stage

* Open and load mutable bool index in single stage

* Open and load mutable null index in single stage

* Refactor index selector, don't return early
2025-08-14 14:30:26 +02:00
Tim Visée 9218d74985 Open and load geo payload indices in single stage (#7038)
* Open and load mutable geo index in single stage

* Open and load immutable geo index in single stage

* Open and load mmap geo index in single stage
2025-08-14 14:30:26 +02:00
Tim Visée 788d1606e5 Open and load full text payload indices in single stage (#7004)
* Open and load mutable full text index in single stage

* Open and load immutable full text index in single stage

* Open and load mmap full text index in single stage
2025-08-14 14:30:25 +02:00
Tim Visée 3ef13e0d9f Open and load map payload indices in single stage (#7003)
* Open and load mutable map index in single stage

* Open and load immutable map index in single stage

* Open and load mmap map index in single stage
2025-08-14 14:30:06 +02:00
Tim ViséeandLuis Cossío b8997efc66 Open and load numeric payload indices in single stage (#6999)
* In struct payload index open, use option to specify loaded, set rebuild

* Open and load mutable numeric index in single stage

* Open and load immutable numeric index in single stage

* Open and load mmap numeric index in single stage

* new_null_index always returns null index

Missing refactor for MutableNullIndex. Since we have the
`create_if_missing` flag, we no longer have `open_if_exists` function,
ergo, signature for `new_null_index` should not include an `Option`.

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2025-08-14 14:30:02 +02:00
Tim Visée 5ee3044272 Bump version to 1.15.2 (#7012)
* Bump version to 1.15.2

* Update missed cherry picks
2025-08-11 17:02:06 +02:00
Tim Visée 672e9aa957 Fix GPU build in CI due to outdated package index (#7010)
* Update APT package index before installing

* Install clang and other packages with single command

* Don't quiet package index update
2025-08-11 14:17:20 +02:00
Tim Visée 4c98347905 Show unique index types in error message (#6998) 2025-08-11 13:17:59 +02:00
Tim Visée 032b3801bb Fix clippy warnings for Rust 1.89 (#6997) 2025-08-11 13:17:53 +02:00
Tim ViséeandLuis Cossío 9e914acd12 Fix flushing of dynamic mmap flags (#6966)
* Directly flush flags, don't use single-use flusher

* Explicitly flush before resizing flags file, prevent losing dirty pages

* Don't create now obsolete flusher when opening mmap

* clippy

* Move flush call

* flush before resizing only

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2025-08-11 13:16:33 +02:00
Tim Visée 8a08ab8f6d Update roadmap (#6947) 2025-08-11 13:15:17 +02:00
Tim Visée f53f8cbfc3 Fix checkfs in MUSL builds (#6903) 2025-07-24 08:44:51 +02:00
Tim Visée 137b6c1e4a Bump version to 1.15.0 (#6896)
* Bump version to 1.15.0

* Update missed cherry picks

* Update redoc to 1.15.0
2025-07-18 11:06:11 +02:00
Tim Visée 60c216be92 Preprocess query vectors, sort sparse vectors (#6895)
* Add test to assert behavior of unsorted sparse query

* Preprocess sparse vectors

* Fix typo
2025-07-17 16:13:01 +02:00
Tim Visée d6844b7f65 Deprecations for Qdrant 1.15.0 (#6892)
* Deprecate init_from

* Mark memmap_threshold as deprecated

* Mark locks API as deprecated

* Mark RBAC collection access payload filter as deprecated

* Allow deprecations in tests and benchmarks
2025-07-17 16:12:57 +02:00
Tim Visée d4c6d947da Don't delete payload index RocksDB if we still use RocksDB storage type (#6888) 2025-07-17 14:02:37 +02:00
Tim Viséeandcoderabbitai[bot] 877adc6748 Fix broken is_empty filter on new points (#6882)
* Add test to catch bug

Bug: <https://github.com/qdrant/qdrant/issues/6880>

* Fix loading null index from wrong path

* Simplify test

* Also bump total point count when removing a point

* Add debug assertion, ensure we don't create null index in selector

* Update bug link

* Remove unused import

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-07-17 14:01:38 +02:00