Retry cached block sections after remote header processing - #2549
Merged
kushti merged 2 commits intoSep 15, 2026
Merged
Conversation
This was referenced Sep 13, 2026
kushti
approved these changes
Sep 15, 2026
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Block sections received before their header can remain cached after the header arrives. The synchronizer has already marked them Received and canceled their download retry, while the holder's header branch only drains the header cache. If no further body batch arrives, full-block processing can stall even though the required data has been received.
Drain the existing body cache after remote-header processing. This reuses normal applicability, history, state and delivery-status handling. The change is one call plus its comment and a regression suite, across two files.
Validation: the unchanged regression fails in both UTXO and Digest modes without the call and passes in both with it. It verifies three sections cached before the header, then full persistence, best-full-block selection, matching state version/root and an empty cache after only the header arrives. The actual v6.0.6 composition also passed 2/2 cases after normal compilation. Independent source review found no blocking issue. CI remains a separate gate; the local proof does not establish the exclusive cause of earlier integration timeouts.
This targets v6.0.6 and can be reviewed independently of the wallet feature. Common commit
a772a5cbis also reused unchanged by the wallet integration PR. #2433 addresses missing parents of cached headers; this correction addresses already received body sections and does not depend on it. Tracking and integration order.