Skip to content

fix(object_store): probe a stale first bucket before it has a median - #204

Merged
shikhar merged 1 commit into
mainfrom
fix/probe-unmeasured-first-bucket
Oct 29, 2026
Merged

shikhar merged 1 commit into
mainfrom
fix/probe-unmeasured-first-bucket

Conversation

@shikhar

@shikhar shikhar commented Oct 29, 2026

Copy link
Copy Markdown
Member

Closes #203

Since #182, canceled copies raise an unmeasured bucket's routing latency (unmeasured_latency), which only a successful read or a recovery probe clears. RoutingSnapshot::primary() only staleness-probed buckets with a median, so a first bucket that canceled copies had ranked behind its peers before any read succeeded was never probed. Hedges and fallback pick the best untried bucket, which with three or more buckets is another peer, so the first bucket could be bypassed indefinitely. This contradicts docs/replica-reads.md, which says the first bucket is probed regardless.

The first bucket is now considered stale after 30 s without an outcome whether or not it has a median. Peers without a median are still not staleness-probed, as since #139. probe_after still spaces repeat probes.

a_stale_unmeasured_first_bucket_is_probed fails on main and passes with the fix.

🤖 Generated with Claude Code

Canceled copies raise an unmeasured bucket's routing latency until a read
succeeds or a recovery probe clears it. Staleness probes required a median,
so a first bucket that canceled copies ranked behind its peers before any
read succeeded was never probed, and hedges and fallback chose peers ahead
of it, leaving it bypassed indefinitely.

Closes #203

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@greptile-apps

greptile-apps Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge.

Summary

Allows a stale first bucket to receive a recovery probe before it has a measured median.

  • Replica reads can probe the first bucket even before it has a median.

No actionable issues found. Tests were not run.

Reviews (1) · Last reviewed commit: "fix(object_store): probe a stale first b..." · Reviewed by Greptile

@shikhar
shikhar merged commit 6a4bea8 into main Oct 29, 2026
8 checks passed
@shikhar
shikhar deleted the fix/probe-unmeasured-first-bucket branch October 29, 2026 14:37
@github-actions github-actions Bot mentioned this pull request Oct 29, 2026
shikhar pushed a commit that referenced this pull request Oct 29, 2026
## 🤖 New release

* `cachey`: 0.13.1 -> 0.13.2

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.13.2](0.13.1...0.13.2)
- 2026-10-29

### Added

- *(service)* resolve millisecond latencies in download and first chunk
histograms ([#207](#207))
- *(service)* report hedge delays in place of raw phase latency
([#206](#206))

### Fixed

- *(object_store)* probe a stale first bucket before it has a median
([#204](#204))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Detail Bug] Object store replica reads: preferred bucket can be bypassed indefinitely after canceled-copy slow-start

1 participant