mirror of
https://github.com/qdrant/qdrant.git
synced 2026-09-25 07:27:41 -05:00
`map_get_err` is handed the key it was reading, but only the `NotFound` arm kept it; every other error boxed the underlying failure and dropped the key on the floor. Callers that report such a failure are then unable to say what it was reading. The read-only segment open is the clearest case: it logs one warning per skipped segment, so a failure anywhere among a segment's objects — state file, id tracker, payload storage, per-vector storage and index, payload indexes — produces the same line, naming only the segment uuid. A recent load test hit exactly this: 667 warnings, all byte-identical, none of them saying which file failed. Give the `S3` variant an explicit `path` beside its source error, rather than folding the key into the message, so the object stays a field callers can read. It is optional because most construction sites are not about one particular object — a short or overlapping read from the scatter buffer, the append context's protocol errors — and those keep using `s3()` unchanged. `s3_at()` sets it, and the object-store read surface (every `map_get_err` caller, plus `list_files` and `exists`) now does. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>