From 3191be99adbe66cc0d17888ab0f9e96e076e1a36 Mon Sep 17 00:00:00 2001 From: Dev Ojha Date: Wed, 3 Jul 2024 12:02:25 +0100 Subject: [PATCH] Switch HasVote gossip to TrySend --- consensus/reactor.go | 2 +- p2p/switch.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/consensus/reactor.go b/consensus/reactor.go index 510d89874cf..3c8370f97ce 100644 --- a/consensus/reactor.go +++ b/consensus/reactor.go @@ -501,7 +501,7 @@ func (conR *Reactor) broadcastHasVoteMessage(vote *types.Vote) { } go func() { - conR.Switch.BroadcastEnvelope(p2p.Envelope{ + conR.Switch.TryBroadcast(p2p.Envelope{ ChannelID: StateChannel, Message: msg, }) diff --git a/p2p/switch.go b/p2p/switch.go index 22c94404cc9..78fcb71855b 100644 --- a/p2p/switch.go +++ b/p2p/switch.go @@ -279,6 +279,20 @@ func (sw *Switch) BroadcastEnvelope(e Envelope) { } } +// TryBroadcast runs a go routine for each attempted send. +// +// NOTE: TryBroadcast uses goroutines, so order of broadcast may not be preserved. +func (sw *Switch) TryBroadcast(e Envelope) { + sw.Logger.Debug("TryBroadcast", "channel", e.ChannelID) + + peers := sw.peers.List() + for _, peer := range peers { + go func(p Peer) { + p.TrySendEnvelope(e) + }(peer) + } +} + // NumPeers returns the count of outbound/inbound and outbound-dialing peers. // unconditional peers are not counted here. func (sw *Switch) NumPeers() (outbound, inbound, dialing int) {