Conversation
222428a to
5299023
Compare
6a50510 to
8162df6
Compare
8162df6 to
74b015e
Compare
7402459 to
939defb
Compare
a1d0543 to
c5773aa
Compare
4e4faae to
857c8cc
Compare
a76890d to
96339bb
Compare
haxxpop
reviewed
Sep 23, 2025
haxxpop
reviewed
Sep 23, 2025
818f40d to
7fc7eb4
Compare
haxxpop
reviewed
Sep 24, 2025
haxxpop
reviewed
Sep 24, 2025
haxxpop
reviewed
Sep 24, 2025
haxxpop
reviewed
Sep 24, 2025
haxxpop
reviewed
Sep 24, 2025
7fc7eb4 to
578e12f
Compare
Contributor
Author
|
thanks for the review @ppopth, friendly reminder you can see the latest changes with |
d0f9caf to
a5ce86b
Compare
The bitmap is probably the common case, so add library support for it.
This allows a peer's local partsMetadata to merge with their remote partsMetadata. As long as the underlying PartsMetadata type supports CRDT-like addition, we can avoid sending the peer duplicates. Take the following example (credit Sukun): > Say: We have parts 1, 2, 5, 6 > > 1. Peer sends a message saying I have part 1, 2 > 2. We send parts 5, 6 and update the peerstate in PublishMessage to (1, 2, 5, 6) > 3. Concurrently with 2, we receive message from the peer saying I now have parts (1, 2, 3, 4) With this change we can now correctly store the fact that this peer should have parts 1,2,3,4,5,6. And in a way that does not assume a specific representation of the PartsMetadata.
and fix a bug where we would skip sending them full messages if they requested partial messages and we disabled partial messages.
if they requested partial messages on a given topic.
When a topic join happens concurrently with adding a new peer, we may send the topic join announcement before the hello packet which contains our extensions. This is a protocol violation. This change starts sending rpcs on new stream only after we've enqued a hello packet. We use UrgentPush to ensure that it's the first one sent.
instead of requiring a message object
We need some way to give peer feedback to gossipsub if the application is using partial messages. This adds a new PeerFeedback method that lets an application modify the peer score.
This lets us distinguish who can support a partial message request versus who requests partial message on a per topic basis.
Creates a mixed network where only one peer request partial, and the rest either support or don't
a5ce86b to
8b37311
Compare
A peer initiated group state is a state that is initiatlized due to receiving a partial message RPC for which we have not (yet) published to. It's useful to have this state so we can remember what parts a peer has if we do publish to that group. Previously we limited the total number of peer initiated group states in a topic. This was agnostic to how many groups a single peer initiated, which meant that a single peer could exhaust the whole limit. This change tracks how many group states each peer has initialized and limits each peer to a configurable number of these states. The default total and per peer limits of 255 8 are likely good enough for most use cases, but the options exist for users to change this if they need to.
changes partialMessageStatePerTopicGroup to partialMessageStatePerGroupPerTopic to better reflect its usage.
This was referenced Feb 27, 2026
Merged
walldiss
added a commit
to celestiaorg/go-header
that referenced
this pull request
Mar 4, 2026
## Summary - Replace `github.com/libp2p/go-libp2p` with `github.com/celestiaorg/go-libp2p` fork based on v0.46.0 - The fork makes `SetDeadline`, `SetReadDeadline`, and `SetWriteDeadline` return nil on mocknet streams instead of an error ## Context go-libp2p-pubsub added `SetWriteDeadline` calls in [libp2p/go-libp2p-pubsub@6587e8e](libp2p/go-libp2p-pubsub@6587e8e) (part of libp2p/go-libp2p-pubsub#631). Mocknet streams use `io.Pipe` which doesn't support deadlines, so `SetWriteDeadline` returns an error. The pubsub code treats this as fatal — resets the stream and never sends the hello packet. This prevents gossipsub peers from discovering each other's subscriptions in any mocknet-based test. Upstream PR: https://github.com/libp2p/go-libp2p/pull/new/fix/mocknet-deadline-noop
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.
Implements libp2p/specs#685
Commits are meaningful. Best to review commit by commit.