Skip to content

v0.9.0-rc.33

Choose a tag to compare

@github-actions github-actions released this 04 Jun 05:47
· 31 commits to main since this release
v0.9.0-rc.33
20177a5

Fix: peer-health-aware blob-fetch ordering (#220, closes #137). Single-fix release plus a developer-tooling toolchain pin.

Fixed

  • fetch_blob no longer pays the full download_stall_timeout on every fetch when a preferred peer is unreachable (#220, closes #137). A new internal PeerHealthIndex records the most-recent per-peer fetch outcome and fetch_blob stably reorders its peer list by recent health — recently-successful peers first, untried/cooled-down peers next, recently-stalled/errored peers last (deprioritize, not skip). In dual-C2 deployments where one C2 is down, the dead peer is demoted behind the live one after the first observed stall, removing the ~30s per-blob penalty on subsequent fetches. Builds on the #122 stall watchdog.

Added

  • IrohConfig::peer_health_cooldown (default 120s). How long a recently stalled/errored peer stays deprioritized in the fetch ordering before reverting to neutral priority. New field on the pub struct IrohConfig; existing ..Default::default() construction is unaffected. The low-level from_endpoint_with_protocols_with_timeouts constructor gains a matching trailing peer_health_cooldown argument (the default-using from_config / from_endpoint_with_protocols constructors are unchanged for callers).

Changed

  • Pinned rust-toolchain.toml to the stable channel (with rustfmt + clippy components) so bare cargo — and therefore the .githooks/pre-commit gate — resolves to a toolchain new enough for the iroh 1.0-rc / iroh-blobs tree (rustc >= 1.91). Matches CI's dtolnay/rust-toolchain@stable; developer-environment only, no effect on the published crate.