adding discv5 debug logs

This commit is contained in:
Gabriel mermelstein 2025-06-09 14:34:08 +02:00
parent 4f181abe0d
commit 17a95cc2c7
4 changed files with 34 additions and 13 deletions

View File

@ -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",

View File

@ -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()

View File

@ -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)

View File

@ -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)])