Files
qdrant/lib
qdrant-cloud-bot c6b7446b10 fix: propagate flush cancellation through payload index flushers (#8651)
* fix: propagate flush cancellation through payload index flushers

When a payload index is deleted, the gridstore backing it is dropped.
A concurrent background flush detects this (weak Arc refs fail to upgrade)
and returns GridstoreError::FlushCancelled. The From<GridstoreError> impl
correctly maps this to OperationError::Cancelled, and entry.rs gracefully
handles Cancelled by skipping the flush.

However, two intermediate layers unconditionally wrapped all errors as
ServiceError, destroying the Cancelled variant before it reached the
handler in entry.rs:

1. All 4 mutable index flushers (map, text, numeric, geo) used
   OperationError::service_error(format!(...)) instead of converting
   via Into<OperationError> first.

2. struct_payload_index flusher also unconditionally wrapped sub-flusher
   errors as service_error.

This caused the benign FlushCancelled to surface as a fatal
"last background flush failed" ServiceError.

Fix both layers to propagate Cancelled errors as-is, matching the
pattern already used for vector storage, quantization, and id tracker
flushers in entry.rs.

Made-with: Cursor

* simplify error conversion

---------

Co-authored-by: Cursor Agent <agent@cursor.com>
Co-authored-by: generall <andrey@vasnetsov.com>
2026-04-13 12:37:46 +02:00
..
2026-04-10 14:45:18 +02:00
2026-04-10 14:45:18 +02:00
2026-04-10 14:45:18 +02:00
2026-04-07 19:58:22 -04:00
2026-04-10 14:45:18 +02:00
2026-04-09 10:02:45 +02:00
2026-04-10 14:45:18 +02:00
2026-04-09 10:02:45 +02:00