Files
qdrant/lib/edge
Andrey VasnetsovandClaude Fable 5 abc97939f8 Resolve vanished segments against the manifest in follower refresh (#9792)
Third step of the ReadOnlyEdgeShard not-found handling (after #9763 and
#9777): shard-level resolution of live-reload failures, per the
live-reload design requirements.

refresh() is now a bounded retry loop over single-manifest-snapshot
attempts. Within an attempt every survivor live-reloads even if one
fails (they are independent); failures split by classification:

- Not-found: resolved against a re-read manifest. Gone from the
  manifest means the leader removed the segment mid-reload — drop it
  and re-run the attempt to pick up its replacements immediately.
  Still listed means essential files are genuinely missing — escalate.
- Anything else: escalate after reloading the other survivors,
  replacing the previous warn-and-swallow that could hide a corrupted
  segment forever. Safe: a failed segment keeps serving its
  pre-refresh state and pending_reload replays the unapplied delta on
  the next refresh.

If attempts run out (leader churning segments continuously) refresh
logs a warning and returns Ok: every swap was atomic, so the shard is
consistent, just possibly not the newest; the next refresh continues.

open_with_enumerator now reuses the refresh machinery: empty holder +
refresh() + the open-only merge_follower_config overlay, removing the
duplicated load/derive logic. At open there are no survivors, so open
behavior is unchanged (#9762 already made it tolerant of unloadable
segments via the superset-biased manifest contract).

Load-side failures stay as settled by #9762: unloadable listed
segments are skipped and retried on every refresh.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 11:17:01 +02:00
..
2026-03-26 17:51:49 +01:00
2026-05-08 13:46:36 +02:00
2026-03-26 17:51:49 +01:00

crates.io PyPI

This dir contains a Justfile with recipes to build/check/run examples for edge packages. Install https://github.com/casey/just to use it.

Rust Qdrant Edge package

Rust Qdrant Edge workspace lives in the publish directory. It's a separate workspace, not tied to the main workspace.

The qdrant-edge package is autogenerated by the amalgamate.py script and placed in the ./publish/qdrant-edge directory (gitignored).

If you need to make changes in the qdrant-edge package, edit the original packages in this repo (/lib in the repo root).

just rs-examples
# Or, manually:
./amalgamate.py
cargo check -p examples
cargo run -p examples --bin demo
cargo run -p examples --bin …

(see full binary list in publish/examples/src/bin)

How to publish Rust Package to crates.io

  1. Update the VERSION in publish/amalgamate.py.
  2. Run Qdrant Edge Rust Release workflow.

Python Qdrant Edge package

It's in the python directory. It's part of the main workspace, unlike the Rust package.

just py-build
just py-examples

Or, manually:

# Setup environment
cd lib/edge/python
python -m venv .venv
source .venv/bin/activate

pip install --user maturin

# Build and install the package:
cd lib/edge/python
maturin develop --no-default-features

# Run example:
python examples/demo.py