Files
generall 8f82806318 Provision fresh appendable segments when all reach max_segment_size
Fixes appendable segment overflow (#9158): CoW-moving operations (e.g.
set_payload by filter over indexed segments) and plain inserts used to pick a
destination appendable segment without any size check, so a single large
operation could pile every moved point into one segment far past the
configured max_segment_size.

The update path now respects the resolved optimizer threshold, mirrored into
the segment holder as a soft size cap:

- CoW-move destinations are re-checked per moved point; candidates at the cap
  are skipped, and the insert loops refuse destinations that reached it.
- When no appendable segment has capacity left, the operation fails with the
  new recoverable `OperationError::OutOfAppendableCapacity`.
- `LockedSegmentHolder::update_with_segment_provisioning` catches that error,
  provisions a fresh appendable segment (same machinery the optimization
  worker already used between operations), and re-applies the operation;
  per-point version checks make the re-run resume where it left off, exactly
  like WAL replay.

The moving `process_*` entry points now take the segment holder lock plus an
optional `SegmentProvisioning`, wired from the update worker, WAL replay, and
failed-operation recovery. The edge shard passes no provisioning and no cap,
keeping its behavior unchanged.

The regression test from #9158 is included (adapted to configure the cap) and
now passes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 09:30:35 +02:00
..
2026-03-11 17:13:46 +00:00
2026-04-08 10:14:04 +02:00
2026-03-11 17:13:46 +00: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