statement-store: reject statement peers during major sync#11477
Open
peter941221 wants to merge 3 commits intoparitytech:masterfrom
Open
statement-store: reject statement peers during major sync#11477peter941221 wants to merge 3 commits intoparitytech:masterfrom
peter941221 wants to merge 3 commits intoparitytech:masterfrom
Conversation
- reject inbound statement substreams while major syncing - disconnect statement streams that open during the sync window - disconnect already-connected peers that send during major sync - add regression tests for reconnect and initial-sync recovery paths
|
User @peter941221, please sign the CLA here. |
Author
|
Quick note on the follow-up commit:
So the main slice is still the same narrow one:
|
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.
Summary
Fixes
#11411by preventing statement peers from remaining half-connected during major sync.This also includes the stream-open snapshot fix so a peer admitted just before major sync starts still queues initial sync correctly instead of falling into the same broken state through a race.
Why this shape
Silently ignoring statements keeps the broken middle state alive:
Disconnecting is the smallest safe repair because it reuses the existing lifecycle instead of adding new sync-transition machinery.
Tests
initial_sync_peers_activewhen flooding cleanup removes pending sync stateValidation
git diff --check refs/remotes/upstream/master..HEAD -- substrate/client/network/statement/src/lib.rscargo test -p sc-network-statement --lib major_sync -- --nocaptureNote: the full lib suite on this narrowed branch still hits the older sustained-flooding test that
7bfd50elater stabilizes, so that test-only stabilization can remain a separate follow-up if preferred.