pub async fn open_hedge_sibling(
url: &SensitiveUrl,
knobs: Box<dyn BlobKnobs>,
metrics: S3BlobMetrics,
) -> HedgeSiblingExpand description
Opens the sibling handle that crate::hedge::HedgedBlob runs hedge
requests on for url.
Contract:
- An HedgeSibling::Isolated handle observes exactly the same durable
store as a handle opened from the same
url, but is built from a scratch client: it shares no HTTP connection pool, DNS state, or credential chain, so a hedge request on it can never be assigned a connection the primary’s pool has already half-killed. - Backends where a second open would observe an independent store (mem, turmoil’s simulated store), or that have no connection state to isolate (file), return HedgeSibling::SharedWithPrimary instead.
- Callers must use the handle only for idempotent reads.
Errors opening the sibling degrade to HedgeSibling::Unavailable with a
warning rather than failing: persist must come up even if hedging cannot.
A process that hits this keeps hedging unavailable until restart, visible
as mz_persist_blob_hedges_skipped{reason="unavailable"} and
mz_persist_blob_hedge_armed staying 0.