Skip to content

Commit

Permalink
fix: peer_manager - extend the number of connection requests to known…
Browse files Browse the repository at this point in the history
… peers (#2534)

* peer_manager: limit the max num out conns from within the conn loop
  • Loading branch information
Ivansete-status committed Mar 19, 2024
1 parent 33774fa commit 2173fe2
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions waku/node/peer_manager/peer_manager.nim
Original file line number Diff line number Diff line change
Expand Up @@ -696,7 +696,7 @@ proc pruneInRelayConns(pm: PeerManager, amount: int) {.async.} =
asyncSpawn(pm.switch.disconnect(p))

proc connectToRelayPeers*(pm: PeerManager) {.async.} =
let (inRelayPeers, outRelayPeers) = pm.connectedPeers(WakuRelayCodec)
var (inRelayPeers, outRelayPeers) = pm.connectedPeers(WakuRelayCodec)
let maxConnections = pm.switch.connManager.inSema.size
let totalRelayPeers = inRelayPeers.len + outRelayPeers.len
let inPeersTarget = maxConnections - pm.outRelayPeersTarget
Expand All @@ -710,10 +710,23 @@ proc connectToRelayPeers*(pm: PeerManager) {.async.} =

let notConnectedPeers =
pm.peerStore.getNotConnectedPeers().mapIt(RemotePeerInfo.init(it.peerId, it.addrs))
let outsideBackoffPeers = notConnectedPeers.filterIt(pm.canBeConnected(it.peerId))
let numPeersToConnect = min(outsideBackoffPeers.len, MaxParallelDials)

await pm.connectToNodes(outsideBackoffPeers[0 ..< numPeersToConnect])
var outsideBackoffPeers = notConnectedPeers.filterIt(pm.canBeConnected(it.peerId))

shuffle(outsideBackoffPeers)

var index = 0
var numPendingConnReqs = outsideBackoffPeers.len
## number of outstanding connection requests

while numPendingConnReqs > 0 and outRelayPeers.len < pm.outRelayPeersTarget:
let numPeersToConnect = min(numPendingConnReqs, MaxParallelDials)
await pm.connectToNodes(outsideBackoffPeers[index ..< (index + numPeersToConnect)])

(inRelayPeers, outRelayPeers) = pm.connectedPeers(WakuRelayCodec)

index += numPeersToConnect
numPendingConnReqs -= numPeersToConnect

proc manageRelayPeers*(pm: PeerManager) {.async.} =
if pm.wakuMetadata.shards.len == 0:
Expand Down

0 comments on commit 2173fe2

Please sign in to comment.