From 3074cdb11c72388d5cbdb395fbcd9f316a1bc549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?rich=CE=9Brd?= Date: Fri, 15 Mar 2024 20:48:10 -0400 Subject: [PATCH] fix: verify if metadata exists before checking for shard mismatch (#1056) --- waku/v2/peermanager/topic_event_handler.go | 26 +++++++++------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/waku/v2/peermanager/topic_event_handler.go b/waku/v2/peermanager/topic_event_handler.go index fff6de03..60e1f759 100644 --- a/waku/v2/peermanager/topic_event_handler.go +++ b/waku/v2/peermanager/topic_event_handler.go @@ -121,24 +121,20 @@ func (pm *PeerManager) handlerPeerTopicEvent(peerEvt relay.EvtPeerTopic) { wps := pm.host.Peerstore().(*wps.WakuPeerstoreImpl) peerID := peerEvt.PeerID if peerEvt.State == relay.PEER_JOINED { - rs, err := pm.metadata.RelayShard() - if err != nil { - pm.logger.Error("could not obtain the cluster and shards of wakunode", zap.Error(err)) - return - } else if rs == nil { - pm.logger.Info("not using sharding") - return - } - - if pm.metadata != nil && rs.ClusterID != 0 { - ctx, cancel := context.WithTimeout(pm.ctx, 7*time.Second) - defer cancel() - if err := pm.metadata.DisconnectPeerOnShardMismatch(ctx, peerEvt.PeerID); err != nil { - return + if pm.metadata != nil { + rs, err := pm.metadata.RelayShard() + if err != nil { + pm.logger.Error("could not obtain the cluster and shards of wakunode", zap.Error(err)) + } else if rs != nil && rs.ClusterID != 0 { + ctx, cancel := context.WithTimeout(pm.ctx, 7*time.Second) + defer cancel() + if err := pm.metadata.DisconnectPeerOnShardMismatch(ctx, peerEvt.PeerID); err != nil { + return + } } } - err = wps.AddPubSubTopic(peerID, peerEvt.PubsubTopic) + err := wps.AddPubSubTopic(peerID, peerEvt.PubsubTopic) if err != nil { pm.logger.Error("failed to add pubSubTopic for peer", logging.HostID("peerID", peerID), zap.String("topic", peerEvt.PubsubTopic), zap.Error(err))