From 6d7387e88e6effa63b42798fcb97563641f1df51 Mon Sep 17 00:00:00 2001 From: gabrielmer <101006718+gabrielmer@users.noreply.github.com> Date: Tue, 8 Apr 2025 17:02:37 +0300 Subject: [PATCH] fix: avoid blocking nodes when channels are full (#63) --- 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) {