fix(gossipsub): graft known subscribers when their outbound stream opens - #3598
Draft
tabcat wants to merge 1 commit into
Draft
fix(gossipsub): graft known subscribers when their outbound stream opens#3598tabcat wants to merge 1 commit into
tabcat wants to merge 1 commit into
Conversation
graftOnSubscribe can only add a peer to the mesh once we have an outbound stream to them (the same guard the heartbeat applies). If a peer's SUBSCRIBE is handled before that stream exists, the graft is refused and the peer waits for the next heartbeat before joining the mesh. This adds the mirror trigger: when the outbound stream opens, graft any peer we already know is subscribed, so mesh formation no longer depends on the subscription and the stream arriving in a particular order, nor on the peer grafting us back.
Member
Author
|
still trying to fix the pubsub example in ci. |
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.
Grafts a peer we already know is subscribed as soon as our outbound stream to them is established, mirroring the existing graft-on-subscribe path (#3583).
graftOnSubscribecan only add a peer to the mesh once we have an outbound stream to them (the same guard the heartbeat applies). If a peer's SUBSCRIBE is handled before that stream exists, the graft is refused and the peer waits for the next heartbeat before joining the mesh. This adds the mirror trigger: when the outbound stream opens, graft any peer we already know is subscribed. Mesh formation no longer depends on the subscription and the stream arriving in a particular order, nor on the peer grafting us back.rust-libp2p handles this earlier and more simply, by queuing the GRAFT into a per-peer send queue that the connection handler drains once a substream exists rather than requiring the outbound stream up front; there is a note to that effect next to the code.