From fb5c5d3824ca2bd6380e608c6c3d39c21e9788a4 Mon Sep 17 00:00:00 2001 From: Ivan FB Date: Mon, 4 May 2026 13:11:15 +0200 Subject: [PATCH] only allow furter limits for store live streams --- waku/node/peer_manager/peer_manager.nim | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/waku/node/peer_manager/peer_manager.nim b/waku/node/peer_manager/peer_manager.nim index 9a1389e32..c38303209 100644 --- a/waku/node/peer_manager/peer_manager.nim +++ b/waku/node/peer_manager/peer_manager.nim @@ -404,25 +404,13 @@ proc disconnectNode*(pm: PeerManager, peer: RemotePeerInfo) {.async.} = let peerId = peer.peerId await pm.disconnectNode(peerId) -proc activeServiceStreams(pm: PeerManager, peerId: PeerId): seq[string] = - ## Returns the protocol strings of any open service streams for peerId. - ## Relay streams are excluded: they are exactly what eviction manages. - for connPeerId, muxers in pm.switch.connManager.getConnections(): - if connPeerId != peerId: - continue - for m in muxers: - for stream in m.getStreams(): - if stream.protocol.len > 0 and stream.protocol != WakuRelayCodec: - result.add(stream.protocol) - proc evictPeer(pm: PeerManager, peerId: PeerId) {.async.} = ## Policy-based eviction (relay-peer limit, IP colocation, pruning). - ## Skips the disconnect when the peer has an in-flight stream for any - ## service protocol to avoid aborting active requests. - let serviceStreams = pm.activeServiceStreams(peerId) - if serviceStreams.len > 0: - trace "skipping peer eviction: active service streams", - peerId = peerId, protocols = serviceStreams + ## Skips the disconnect when the peer has an in-flight store stream to + ## avoid aborting active store requests. + let (storeInPeers, storeOutPeers) = pm.connectedPeers(WakuStoreCodec) + if storeInPeers.contains(peerId) or storeOutPeers.contains(peerId): + trace "skipping peer eviction: active store stream", peerId = peerId return await pm.switch.disconnect(peerId)