This repository was archived by the owner on Jan 16, 2026. It is now read-only.
feat(host): Add retry limits and exponential backoff to preimage fetching - #3227
Open
RealiCZ wants to merge 2 commits into
Open
feat(host): Add retry limits and exponential backoff to preimage fetching#3227RealiCZ wants to merge 2 commits into
RealiCZ wants to merge 2 commits into
Conversation
RealiCZ
requested review from
BioMark3r,
einar-oplabs,
emhane,
op-will and
theochap
as code owners
December 29, 2025 06:41
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The
get_preimagemethod inOnlineHostBackendhad an infinite retry loop with no timeout or backoff mechanism. This caused several issues:This became apparent when encountering the error:
Failed to fetch blobs: Preimage oracle error: Channel is closed.Solution
Added comprehensive retry protection following the project's existing retry patterns from
crates/supervisor/service/src/actors/utils.rs:Key Changes
saturating_powandsaturating_multo prevent overflowImplementation Details
preimage_backoff_delay()function mirroring the project'sbackoff_delay()pattern?delayformat for better observabilityTesting
Behavior Changes
PreimageOracleError::Timeoutafter 30 secondsRelated Issues
Addresses scenarios where Beacon node connectivity issues or missing blob data would cause the host to hang indefinitely.