From b13e36adecf3e4c99e1534e4e99298e754e4bd57 Mon Sep 17 00:00:00 2001 From: taratorio <94537774+taratorio@users.noreply.github.com> Date: Tue, 23 Apr 2024 17:33:36 +0300 Subject: [PATCH] polygon/sync: message listener to preserve peer events ordering --- polygon/p2p/message_listener.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/polygon/p2p/message_listener.go b/polygon/p2p/message_listener.go index 38180f13920..f69c15005d7 100644 --- a/polygon/p2p/message_listener.go +++ b/polygon/p2p/message_listener.go @@ -170,7 +170,18 @@ func (ml *messageListener) notifyPeerEventObservers(peerEvent *sentry.PeerEvent) ml.observersMu.Lock() defer ml.observersMu.Unlock() - notifyObservers(ml.peerEventObservers, peerEvent) + // wait on all observers to finish processing the peer event before notifying them + // with subsequent events in order to preserve the ordering of the sentry messages + var wg sync.WaitGroup + for _, observer := range ml.peerEventObservers { + wg.Add(1) + go func(observer MessageObserver[*sentry.PeerEvent]) { + defer wg.Done() + observer(peerEvent) + }(observer) + } + + wg.Wait() return nil }