v0.9.0-rc.33
·
31 commits
to main
since this release
Fix: peer-health-aware blob-fetch ordering (#220, closes #137). Single-fix release plus a developer-tooling toolchain pin.
Fixed
fetch_blobno longer pays the fulldownload_stall_timeouton every fetch when a preferred peer is unreachable (#220, closes #137). A new internalPeerHealthIndexrecords the most-recent per-peer fetch outcome andfetch_blobstably 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 thepub struct IrohConfig; existing..Default::default()construction is unaffected. The low-levelfrom_endpoint_with_protocols_with_timeoutsconstructor gains a matching trailingpeer_health_cooldownargument (the default-usingfrom_config/from_endpoint_with_protocolsconstructors are unchanged for callers).
Changed
- Pinned
rust-toolchain.tomlto thestablechannel (withrustfmt+clippycomponents) so barecargo— and therefore the.githooks/pre-commitgate — resolves to a toolchain new enough for the iroh 1.0-rc / iroh-blobs tree (rustc >= 1.91). Matches CI'sdtolnay/rust-toolchain@stable; developer-environment only, no effect on the published crate.