From 7e60e972c5afbf3b1bfaae9d10dafb1964d6bda7 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Tue, 8 Apr 2025 12:35:47 +0300 Subject: [PATCH] fix: avoid blocking nodes when channels are full --- waku/nwaku.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/waku/nwaku.go b/waku/nwaku.go index aa1e464..f1e2c48 100644 --- a/waku/nwaku.go +++ b/waku/nwaku.go @@ -484,7 +484,11 @@ func (n *WakuNode) parseMessageEvent(eventStr string) { if err != nil { Error("could not parse message %v", err) } - n.MsgChan <- *envelope + select { + case n.MsgChan <- *envelope: + default: + Warn("Can't deliver message to subscription, MsgChan is full") + } } func (n *WakuNode) parseTopicHealthChangeEvent(eventStr string) { @@ -494,7 +498,12 @@ func (n *WakuNode) parseTopicHealthChangeEvent(eventStr string) { if err != nil { Error("could not parse topic health change %v", err) } - n.TopicHealthChan <- topicHealth + + select { + case n.TopicHealthChan <- topicHealth: + default: + Warn("Can't deliver topic health event, TopicHealthChan is full") + } } func (n *WakuNode) parseConnectionChangeEvent(eventStr string) { @@ -504,7 +513,12 @@ func (n *WakuNode) parseConnectionChangeEvent(eventStr string) { if err != nil { Error("could not parse connection change %v", err) } - n.ConnectionChangeChan <- connectionChange + + select { + case n.ConnectionChangeChan <- connectionChange: + default: + Warn("Can't deliver connection change event, ConnectionChangeChan is full") + } } func (n *WakuNode) GetNumConnectedRelayPeers(optPubsubTopic ...string) (int, error) {