From 17a95cc2c7dfd04717c44ec3017e3638e780d489 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Mon, 9 Jun 2025 14:34:08 +0200 Subject: [PATCH] adding discv5 debug logs --- waku/discovery/waku_discv5.nim | 14 ++++++++----- waku/factory/node_factory.nim | 3 +++ waku/factory/waku.nim | 3 +++ waku/node/peer_manager/peer_manager.nim | 27 +++++++++++++++++-------- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/waku/discovery/waku_discv5.nim b/waku/discovery/waku_discv5.nim index 221acef42..84c83a7d2 100644 --- a/waku/discovery/waku_discv5.nim +++ b/waku/discovery/waku_discv5.nim @@ -219,12 +219,14 @@ proc findRandomPeers*( wd: WakuDiscoveryV5, overridePred = none(WakuDiscv5Predicate) ): Future[seq[waku_enr.Record]] {.async.} = ## Find random peers to connect to using Discovery v5 + + echo "---------------- findRandomPeers 1" let discoveredNodes = await wd.protocol.queryRandom() var discoveredRecords = discoveredNodes.mapIt(it.record) - when defined(debugDiscv5): - logDiscv5FoundPeers(discoveredRecords) + echo "---------------- findRandomPeers 2" + logDiscv5FoundPeers(discoveredRecords) # Filter out nodes that do not match the predicate if overridePred.isSome(): @@ -245,7 +247,7 @@ proc searchLoop(wd: WakuDiscoveryV5) {.async.} = info "Starting discovery v5 search" while wd.listening: - trace "running discv5 discovery loop" + echo "---------------running discv5 discovery loop" let discoveredRecords = await wd.findRandomPeers() var discoveredPeers: seq[RemotePeerInfo] @@ -261,11 +263,12 @@ proc searchLoop(wd: WakuDiscoveryV5) {.async.} = discoveredPeers.add(peerInfo) - trace "discv5 discovered peers", + echo "----------------- discv5 discovered peers" + info "discv5 discovered peers", num_discovered_peers = discoveredPeers.len, peers = toSeq(discoveredPeers.mapIt(shortLog(it.peerId))) - trace "discv5 discarded wrong records", + info "discv5 discarded wrong records", wrong_records = wrongRecordsReasons.mapIt("(" & it.record & "," & it.errorDescription & ")") @@ -410,6 +413,7 @@ proc setupDiscoveryV5*( for enr in discv5BootstrapEnrs: let peerInfoRes = enr.toRemotePeerInfo() if peerInfoRes.isOk(): + echo "------------ adding discv5 bootstrap node" nodePeerManager.addPeer(peerInfoRes.get(), PeerOrigin.Discv5) else: debug "could not convert discv5 bootstrap node to peerInfo, not adding peer to Peer Store", diff --git a/waku/factory/node_factory.nim b/waku/factory/node_factory.nim index a03e2a1e1..5ff34fdd3 100644 --- a/waku/factory/node_factory.nim +++ b/waku/factory/node_factory.nim @@ -471,6 +471,9 @@ proc startNode*( # # Use px to periodically get peers if discv5 is disabled, as discv5 nodes have their own # periodic loop to find peers and px returned peers actually come from discv5 + + echo "------------ conf.peerExchange: ", conf.peerExchange + echo "------------ conf.discv5Conf.isSome(): ", conf.discv5Conf.isSome() if conf.peerExchange and not conf.discv5Conf.isSome(): node.startPeerExchangeLoop() diff --git a/waku/factory/waku.nim b/waku/factory/waku.nim index fe797b0a3..7283527cb 100644 --- a/waku/factory/waku.nim +++ b/waku/factory/waku.nim @@ -369,8 +369,10 @@ proc startWaku*(waku: ptr Waku): Future[Result[void, string]] {.async.} = updateWaku(waku).isOkOr: return err("Error in updateApp: " & $error) + echo "--------- before conf.discv5Conf.isSome" ## Discv5 if conf.discv5Conf.isSome: + echo "--------- conf.discv5Conf.isSome is true" waku[].wakuDiscV5 = waku_discv5.setupDiscoveryV5( waku.node.enr, waku.node.peerManager, @@ -383,6 +385,7 @@ proc startWaku*(waku: ptr Waku): Future[Result[void, string]] {.async.} = conf.portsShift, ) + echo "------------- starting discv5" (await waku.wakuDiscV5.start()).isOkOr: return err("failed to start waku discovery v5: " & $error) diff --git a/waku/node/peer_manager/peer_manager.nim b/waku/node/peer_manager/peer_manager.nim index 40a13b601..0803ad9fb 100644 --- a/waku/node/peer_manager/peer_manager.nim +++ b/waku/node/peer_manager/peer_manager.nim @@ -366,14 +366,13 @@ proc connectToNodes*( let combined = zip(connectedPeers, futConns) connectedPeers = combined.filterIt(it[1].read() == true).mapIt(it[0]) - when defined(debugDiscv5): - let peerIds = connectedPeers.mapIt(it.peerId) - let origin = connectedPeers.mapIt(it.origin) - if peerIds.len > 0: - notice "established connections with found peers", - peerIds = peerIds.mapIt(shortLog(it)), origin = origin - else: - notice "could not connect to new peers", attempted = nodes.len + let peerIds = connectedPeers.mapIt(it.peerId) + let origin = connectedPeers.mapIt(it.origin) + if peerIds.len > 0: + notice "established connections with found peers", + peerIds = peerIds.mapIt(shortLog(it)), origin = origin + else: + notice "could not connect to new peers", attempted = nodes.len info "Finished dialing multiple peers", successfulConns = connectedPeers.len, attempted = nodes.len @@ -570,6 +569,7 @@ proc updateOnlineState*(pm: PeerManager) {.async.} = pm.online = await checkInternetConnectivity(pm.dnsNameServers) proc connectToRelayPeers*(pm: PeerManager) {.async.} = + echo "------------ connectToRelayPeers 1" # only attempt if current node is online if not pm.isOnline(): error "connectToRelayPeers: won't attempt new connections - node is offline" @@ -578,6 +578,12 @@ proc connectToRelayPeers*(pm: PeerManager) {.async.} = var (inRelayPeers, outRelayPeers) = pm.connectedPeers(WakuRelayCodec) let totalRelayPeers = inRelayPeers.len + outRelayPeers.len + echo "------------- pm.inRelayPeersTarget: ", pm.inRelayPeersTarget + echo "------------- inRelayPeers.len ", inRelayPeers.len + echo "------------- pm.inRelayPeersTarget ", pm.inRelayPeersTarget + echo "------------- outRelayPeers.len ", outRelayPeers.len + echo "------------- pm.outRelayPeersTarget ", pm.outRelayPeersTarget + if inRelayPeers.len > pm.inRelayPeersTarget: await pm.pruneInRelayConns(inRelayPeers.len - pm.inRelayPeersTarget) @@ -588,6 +594,9 @@ proc connectToRelayPeers*(pm: PeerManager) {.async.} = var outsideBackoffPeers = notConnectedPeers.filterIt(pm.canBeConnected(it.peerId)) + echo "------------- notConnectedPeers ", notConnectedPeers.len + echo "------------- outsideBackoffPeers ", outsideBackoffPeers.len + shuffle(outsideBackoffPeers) var index = 0 @@ -595,7 +604,9 @@ proc connectToRelayPeers*(pm: PeerManager) {.async.} = min(outsideBackoffPeers.len, pm.outRelayPeersTarget - outRelayPeers.len) ## number of outstanding connection requests + echo "----------- numPendingConnReqs: ", numPendingConnReqs while numPendingConnReqs > 0 and outRelayPeers.len < pm.outRelayPeersTarget: + echo "--------- connecting to peers!" let numPeersToConnect = min(numPendingConnReqs, MaxParallelDials) await pm.connectToNodes(outsideBackoffPeers[index ..< (index + numPeersToConnect)])