Skip to main content

open_hedge_sibling

Function open_hedge_sibling 

Source
pub async fn open_hedge_sibling(
    url: &SensitiveUrl,
    knobs: Box<dyn BlobKnobs>,
    metrics: S3BlobMetrics,
) -> HedgeSibling
Expand 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.