35 Commits

Author SHA1 Message Date
Andrey Vasnetsov
c16c55b1fc Bump client timeout in flaky snapshots-consensus e2e test (#9808)
TestSnapshotsInterferenceWithConsensus flakes when the initial
create_collection exceeds the 10s client read timeout. Cluster logs
from a failing run show the primary stalling its consensus loop for
~5s while creating local shards on a loaded runner, which triggered
a leader election that delayed full shard activation to ~10.3s.

Setup operations now get a 30s client timeout. The regression check
for #7489 is unaffected: it relies on the server-side operation
timeout passed to delete_collection, not the client read timeout.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 21:14:04 +02:00
Tim Visée
122ef1595c Enable the single_file_mmap_vector_storage flag by default (#9332)
* Enable the `single_file_mmap_vector_storage` flag by default

* Update comment on when flag is enabled by default

* Update OpenAPI spec

* Fix tests
2026-06-18 16:24:03 +02:00
tellet-q
2b667dfa4c ci: bump test_many_collections timeout to avoid flaky CI timeouts (#9253) 2026-06-01 15:54:07 +02:00
qdrant-cloud-bot
c150bd5caa Strict mode: add max_disk_usage_percent (#9212)
* Strict mode: add `max_disk_usage_percent`

Mirrors `max_resident_memory_percent`: rejects disk-consuming update ops
(upsert, set/overwrite payload, update vectors) when the filesystem hosting
Qdrant storage is filled above the configured percentage. Delete-style ops
remain allowed so callers can free disk.

Disk usage is sampled via `statvfs` and TTL-cached for 5s (same cadence as
the resident-memory reader) so high-RPS request paths don't hammer the
syscall. Reader is keyed by path in `common::disk_usage` and returns `None`
on stat failure — callers (the strict-mode check) treat `None` as "skip",
matching the memory-check behaviour.

Plumbing follows the existing pattern: field on `StrictModeConfig` (+
output/diff/Hash), gRPC proto field `22`, validation 1..=100, REST/proto
conversions, and the hook into `check_strict_mode_toc_batch` alongside the
memory check (both guarded by `any_consumes_memory`).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix CI: Windows disk_usage test + e2e WAL config

- `missing_path_returns_none` panicked on Windows because
  `GetDiskFreeSpaceEx` succeeds for non-existent paths (it resolves up to
  the containing drive). Relax the assertion to "must not panic; if a
  value is returned it must be well-formed". The contract we care about
  (None on failure) is platform-defined, not something we can portably
  force.

- e2e test failed at batch 0 with "WAL buffer size exceeds available disk
  space": Qdrant's existing per-shard `DiskUsageWatcher` enforces
  `free >= 2 * wal_capacity_mb` and the default WAL didn't fit in the
  50 MB tmpfs. Bump tmpfs to 200 MB and shrink `wal_capacity_mb` to 1 MB
  (same pattern as `test_low_disk.py`) so our strict-mode gate is the
  one that fires, not the WAL pre-check. Raise the gate threshold to
  50% to match the larger headroom.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 11:32:25 +02:00
Arnaud Gourlay
83ae2577b8 Storage compatibility v1.18.1 (#9216) 2026-05-28 11:53:09 +02:00
tellet-q
333029afce Fix flaky TestSnapshotsInterferenceWithConsensus (#9102) 2026-05-20 09:52:42 +02:00
tellet-q
b57a01814f Fix long running e2e test (#9090)
* store container logs

* increase vm.max_map_count
2026-05-19 15:01:15 +02:00
qdrant-cloud-bot
7b3e1ab72a fix: reduce flakiness of gRPC TLS e2e test (#9086)
Pre-pull the fullstorydev/grpcurl Docker image before running the test
and retry the gRPC health check up to 3 times, so transient Docker
networking hiccups on CI runners no longer cause a hard failure.

Co-authored-by: Cursor Agent <agent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 09:55:30 +02:00
Arnaud Gourlay
1c9cca02a3 Add v1.18.0 to storare compat. tests (#9028) 2026-05-13 11:29:00 +02:00
tellet-q
ee64809d45 [ai] test: wait for cluster readiness in flaky e2e test (#9012)
* [ai] test: wait for cluster readiness in flaky e2e test
2026-05-12 11:36:11 +02:00
tellet-q
5acd4d635c [ai] use readiness probe instead of a time.sleep (#8884) 2026-05-04 11:34:36 +02:00
Arnaud Gourlay
5498f743ae Add v1.17.1 to storare compat. tests (#8763) 2026-04-22 10:32:33 +02:00
qdrant-cloud-bot
6e7f9973fb Add query verification to storage compatibility tests (#8758)
The compatibility tests previously only checked that collections loaded
with "ok" status. This adds actual queries against every collection to
catch errors/panics in on-disk code paths during version upgrades.

For each collection, we now run:
- Dense vector search (image, dim 256)
- Sparse vector search (text)
- Multivector search (multi-image, dim 128)
- Scroll with filters for all payload index types: keyword, float,
  integer, boolean, geo bounding box, full-text, uuid, datetime

Made-with: Cursor

Co-authored-by: Cursor Agent <agent@cursor.com>
2026-04-21 13:55:12 -04:00
Andrey Vasnetsov
9686c8f952 low ram strict mode (#8715)
* [AI] strict mode parameter for limiting update requests if ram usage is over threshold

* opanAPI update

* [AI] end-to-end test

* fmt

* Fix e2e test: memory rejection check broken by string truncation

UnexpectedResponse.__str__() truncates the raw response body, cutting
off the `max_resident_memory_percent` hint at the end of the error
message. Use `resident memory usage` instead, which appears early
enough to survive the truncation.

Made-with: Cursor

* add grpc validation

* test check_resident_memory

---------

Co-authored-by: Cursor Agent <agent@cursor.com>
Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
2026-04-20 15:48:39 +02:00
xzfc
0b0df145b3 Drop RocksDB (#8529)
* Skip broken tests

* Add rocksdb dropper

This is a temporary tool. It will be removed later in this PR.

* [automated] Drop rocksdb

This commit is made by running tools/rocksdb/drop.sh

* Touch-up after ast-grep

The previous automated commit removed items, but not their comments.
Also, some blocks are left with only one item.
Also, ast-grep can't handle macros like `vec![]`.

This commit completes the job.

* Remove RocksDB dropper

* Remove mentions of rocksdb feature in CI

* Fix clippy warnings

These `FIXME` comments added previously in this PR by ast-grep by
"peeling" cfg_attr like this:

    -#[cfg_attr(not(feature = "rocksdb"), expect(...))]
    +#[expect(...)] // FIXME(rocksdb): ...

This commit removes these allow/expect attributes and fixes clippy
lints.

* Remove leftover rocksdb-related code

Removed:
- Cargo.toml: rocksdb cargo feature flag and dependencies.
- code: rocksdb-related items that was not under feature flag.
- flags.rs: rocksdb-related qdrant feature flags.

Disabled:
- Some benchmarks because these do not compile now.

* Print warning if rocksdb leftovers found in snapshots

* Remove Clone from tokenizer

* Regenerate openapi.json
2026-03-31 18:08:39 +00:00
Arnaud Gourlay
a6c35be384 Fix Docker build for local compatibility tests (#8191) 2026-02-20 16:06:02 +01:00
Arnaud Gourlay
ab1917d634 Storage compatibility v1.17.0 (#8189) 2026-02-20 13:30:24 +01:00
Andrey Vasnetsov
af7608b101 Ignore cacert for internal requests if not configured (#8099)
* ignore cert verification if not configured

* also ignore hostnames

* script for manually testing tls clsuter
2026-02-12 10:59:38 +01:00
tellet-q
3ba62e37b6 Add a test to check if creating snapshots blocks other operations (#7510)
* Add a test to check if creating snapshots blocks other operations
2026-02-11 12:20:47 +01:00
Arnaud Gourlay
6b6981cef0 Bump misc. integration test deps (#7746) 2025-12-11 13:25:37 +01:00
tellet-q
82ca36ed37 Download archives once (#7711) 2025-12-10 10:04:19 +01:00
tellet-q
4fe1a1b068 Long running e2e test on many collections (#7576)
* Add test for many collections

* Reduce number of collections
2025-12-01 11:57:40 +01:00
Arnaud Gourlay
225caa8e5e Test storage compat. v1.6.1 (#7648) 2025-12-01 11:21:50 +01:00
Arnaud Gourlay
155465f154 Document storage compatibility test for v1.15.0 (#7601)
* Enable storage compatibility test for v1.15.0

* proper explanation
2025-11-26 12:11:19 +01:00
Arnaud Gourlay
0f2e415a72 Storage compat. tests all supported versions (#7566)
* Storage compat. tests all supported versions

* v1.15.0 creates problems

* less parallelism to not blow the disk

* Add xdist group (#7568)

* Add session fixture and xdist group

* Increase number of workers back to 4

* Revert caching

* Remove folders with docker_client

* Fix --dist=loadgroup

* Disable v1.15.0

---------

Co-authored-by: tellet-q <166374656+tellet-q@users.noreply.github.com>
2025-11-24 12:45:26 +01:00
Arnaud Gourlay
af86a3b02b Bump storage compat. data v1.16.0 (#7560)
* Bump storage compat. data v1.16.0

* forgot about v1.15.5
2025-11-19 10:53:39 +01:00
Tim Visée
cafe4aa482 Remove trailing whitespaces (#7435) 2025-10-21 14:05:57 +02:00
Arnaud Gourlay
fe94fdc5ce Bump Python 3.13 on CI (#7365)
* Bump Python 3.13 on CI

* Regenerate tls certificates

---------

Co-authored-by: tellet-q <elena.dubrovina@qdrant.com>
2025-10-08 12:50:34 +02:00
tellet-q
c3ca182423 Refactor bash tests: storage-compatibility (#7299)
* Add e2e test for compatibility
2025-10-08 08:33:55 +02:00
tellet-q
23a20261cf Add e2e test for snapshots (#7066)
* Add e2e test that mimics 1 crasher's scenario
2025-09-05 09:14:59 +02:00
tellet-q
5936926c88 Refactor bash test for snapshots recovery (#7008)
* Refactor bash test for snapshots recovery

* Address review: minio check

* Address review
2025-08-27 15:25:27 +02:00
tellet-q
6c75566ac4 Add tests for immutable text index (#7153)
* Add unit test

* Flush text index deletes before reopening them

* Fix unused warning if compiling without RocksDB

* Add e2e test

---------

Co-authored-by: timvisee <tim@visee.me>
2025-08-27 12:18:58 +02:00
tellet-q
f0612d6680 Refactor bash tests: tls (#6995)
* Refactor tls bash test

* Update codespell

* Address review
2025-08-11 10:05:47 +02:00
tellet-q
f87e505439 Refactor bash tests: low-ram (#6911)
* Refactor low-ran bash test

* Address review
2025-08-05 13:05:39 +02:00
tellet-q
f84e1f1f4a Refactor bash tests: low-disk (#6845)
* Add e2e_tests pytest test suite

* Remove old bash test
2025-07-14 12:42:06 +02:00