Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS #306

Closed
D4nte opened this issue Jul 22, 2022 · 4 comments
Closed

ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS #306

D4nte opened this issue Jul 22, 2022 · 4 comments

Comments

@D4nte
Copy link
Contributor

D4nte commented Jul 22, 2022

Using libp2p latest master, I am getting this error systematically:

  libp2p:gossipsub:error createOutboundStream error Error: Too many outgoing protocol streams
    at ConnectionImpl.newStream [as _newStream] (file:///home/fryorcraken/src/libp2p/js-libp2p/src/upgrader.ts:436:27)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async ConnectionImpl.newStream (file:///home/fryorcraken/src/libp2p/js-libp2p/node_modules/@libp2p/connection/src/index.ts:121:20)
    at async EventTarget.createOutboundStream (file:///home/fryorcraken/src/status-im/js-waku/node_modules/@chainsafe/libp2p-gossipsub/src/index.ts:699:4)
    at async file:///home/fryorcraken/src/status-im/js-waku/node_modules/@chainsafe/libp2p-gossipsub/src/index.ts:491:11 {
  code: 'ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS'

This is coming from https://github.com/libp2p/js-libp2p/blob/627b8bf87c775762dd6a9de69b77852e48ebcf26/src/upgrader.ts#L433

There is already a check preventing GossipSub to open several outbound streams:

if (this.streamsOutbound.has(id)) {

However, the existing outbound stream is not detected.

Looking at the logs, I believe that libp2p is opening the outbound stream for the gossip protocol automatically upon connection, and because this stream was not opened by GossipSub, then it is not aware of it and the check does not catch it.

I use Libp2p.dialProtocol.

I need to do further investigation to confirm than dialProtocol indeed opens the outbound stream automatically.

If that's correct then the fix I could implement would be to check on the connection object whether an outbound stream is already opened for the protocol. If so, add it to GossipSub.streamsOutbound:

if (this.streamsOutbound.has(id)) {
, if not, proceed with opening a new outbound stream.

Let me know your thoughts on the propose fixed.

FYI, the logs (I added some console.log in there), /vac/waku/relay* are the gossip protocols I use.

  libp2p:gossipsub initialized +0ms
  libp2p:connection-manager options: { maxConnections: 300, minConnections: 50, maxData: Infinity, maxSentData: Infinity, maxReceivedData: Infinity, maxEventLoopDelay: Infinity, pollInterval: 2000, autoDialInterval: 10000, movingAverageInterval: 60000, autoDial: true, maxParallelDials: 100, maxDialsPerPeer: 4, dialTimeout: 30000, inboundUpgradeTimeout: 30000, resolvers: { dnsaddr: [AsyncFunction: dnsaddrResolver] }, addressSorter: [Function: publicAddressesFirst] } +0ms
  libp2p:connection-manager:latency-monitor latencyCheckIntervalMs: 500 dataEmitIntervalMs: 5000 +0ms
  libp2p:connection-manager:latency-monitor Expecting ~0.1 events per summary +0ms
  libp2p:connection-manager:latency-monitor Using process.hrtime for timing +0ms
  libp2p:connection-manager:auto-dialler options: {"enabled":true,"minConnections":50,"autoDialInterval":10000} +0ms
  libp2p:transports adding transport @libp2p/websockets +0ms
  libp2p:transports adding transport libp2p/circuit-relay-v1 +0ms
  libp2p:peer-store:proto-book:trace add await write lock +0ms
  libp2p libp2p is starting +0ms
  libp2p:peer-store:proto-book:trace add await write lock +1ms
  libp2p:peer-store:proto-book:trace add got write lock +0ms
  libp2p:transports no addresses were provided for listening, this node is dial only +3ms
  libp2p:gossipsub starting +71ms
  libp2p:peer-store:trace getPeers await read lock +0ms
  libp2p:connection-manager:auto-dialler started +5ms
  libp2p:peer-store:metadata-book:trace setValue await write lock +0ms
  libp2p:peer-store:proto-book:trace add await write lock +3ms
  libp2p:peer-store:proto-book:trace add await write lock +0ms
  libp2p:connection-manager started +9ms
pipe Set(0) {}
  libp2p:peer-store:proto-book:trace add await write lock +1ms
  libp2p:peer-store:proto-book:trace add await write lock +0ms
  libp2p:peer-store:proto-book added provided protocols for 12D3KooWHHrYfFBGL21F187br5JshS2u5F3krqZbWPs7MjqhW7tx +0ms
  libp2p:peer-store:proto-book:trace add release write lock +1ms
  libp2p:peer-store:proto-book:trace add got write lock +1ms
  libp2p:peer-store:proto-book added provided protocols for 12D3KooWHHrYfFBGL21F187br5JshS2u5F3krqZbWPs7MjqhW7tx +2ms
  libp2p:peer-store:proto-book:trace add release write lock +1ms
  libp2p:peer-store:trace getPeers got read lock +5ms
  libp2p:peer-store:trace getPeers release read lock +1ms
  libp2p:peer-store:metadata-book:trace setValue got write lock +7ms
  libp2p:peer-store:metadata-book:trace setValue release write lock +1ms
  libp2p:peer-store:metadata-book:trace setValue await write lock +0ms
  libp2p:peer-store:proto-book:trace add got write lock +3ms
  libp2p:peer-store:proto-book added provided protocols for 12D3KooWHHrYfFBGL21F187br5JshS2u5F3krqZbWPs7MjqhW7tx +4ms
  libp2p:peer-store:proto-book:trace add release write lock +1ms
  libp2p:peer-store:proto-book:trace add got write lock +0ms
  libp2p:peer-store:proto-book added provided protocols for 12D3KooWHHrYfFBGL21F187br5JshS2u5F3krqZbWPs7MjqhW7tx +1ms
  libp2p:peer-store:proto-book:trace add release write lock +1ms
  libp2p:peer-store:proto-book:trace add got write lock +0ms
  libp2p:peer-store:proto-book added provided protocols for 12D3KooWHHrYfFBGL21F187br5JshS2u5F3krqZbWPs7MjqhW7tx +1ms
  libp2p:peer-store:proto-book:trace add release write lock +1ms
  libp2p:peer-store:proto-book:trace add got write lock +0ms
  libp2p:peer-store:proto-book added provided protocols for 12D3KooWHHrYfFBGL21F187br5JshS2u5F3krqZbWPs7MjqhW7tx +1ms
  libp2p:peer-store:proto-book:trace add release write lock +1ms
  libp2p:gossipsub:score started +0ms
  libp2p:gossipsub started +13ms
  libp2p:peer-store:metadata-book:trace setValue got write lock +5ms
  libp2p:gossipsub JOIN /waku/2/default-waku/proto +0ms
  libp2p:peer-store:metadata-book:trace setValue release write lock +1ms
  libp2p:peer-store:proto-book:trace add await write lock +2ms
  libp2p:peer-store:proto-book:trace add got write lock +0ms
  libp2p:peer-store:proto-book added provided protocols for 12D3KooWHHrYfFBGL21F187br5JshS2u5F3krqZbWPs7MjqhW7tx +3ms
  libp2p:peer-store:proto-book:trace add release write lock +1ms
  libp2p:peer-store:proto-book:trace add await write lock +0ms
  libp2p:peer-store:proto-book:trace add got write lock +0ms
  libp2p:peer-store:proto-book added provided protocols for 12D3KooWHHrYfFBGL21F187br5JshS2u5F3krqZbWPs7MjqhW7tx +1ms
  libp2p:peer-store:proto-book:trace add release write lock +1ms
  libp2p:peer-store:trace getPeers await read lock +11ms
  libp2p:peer-store:trace getPeers got read lock +0ms
  libp2p libp2p has started +19ms
  libp2p:peer-store:address-book:trace add await write lock +0ms
  libp2p:peer-store:trace getPeers release read lock +2ms
  libp2p:peer-store:address-book:trace add got write lock +1ms
  libp2p:peer-store:address-book added multiaddrs for 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +0ms
  libp2p:peer-store:address-book:trace set release write lock +3ms
  libp2p:connection-manager dial to 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +21ms
  libp2p:dialer check multiaddrs 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +0ms
  libp2p:dialer creating dial target for 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +0ms
  libp2p:peer-store:address-book:trace get wait for read lock +1ms
  libp2p:peer-store:address-book:trace get got read lock +0ms
  libp2p:peer-store:address-book:trace get release read lock +0ms
  libp2p:dialer 1 tokens request, returning 1, 99 remaining +3ms
  libp2p:websockets dialing /ip4/127.0.0.1/tcp/8017/ws/p2p/16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +0ms
  libp2p:websockets dialing 127.0.0.1:8017 +1ms
  libp2p:websockets connected /ip4/127.0.0.1/tcp/8017/ws/p2p/16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +5ms
  libp2p:websockets new outbound connection /ip4/127.0.0.1/tcp/8017/ws/p2p/16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +0ms
  libp2p:upgrader Starting the outbound connection upgrade +0ms
  libp2p:upgrader selecting outbound crypto protocol [ '/noise' ] +0ms
  libp2p:mss:select select: write ["/multistream/1.0.0", "/noise"] +0ms
  libp2p:mss:select select: read "/multistream/1.0.0" +2ms
  libp2p:mss:select select: read "/noise" +1ms
  libp2p:upgrader encrypting outbound connection to 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +4ms
  libp2p:noise Stage 0 - Initiator starting to send first message. +0ms
  libp2p:noise Stage 0 - Initiator finished sending first message. +1ms
  libp2p:noise Stage 1 - Initiator waiting to receive first message from responder... +1ms
  libp2p:noise Stage 1 - Initiator received the message. +10ms
  libp2p:noise Initiator going to check remote's signature... +0ms
  libp2p:noise All good with the signature! +38ms
  libp2p:noise Stage 2 - Initiator sending third handshake message. +0ms
  libp2p:noise Stage 2 - Initiator sent message with signed payload. +5ms
  libp2p:upgrader outbound selecting muxer [ '/mplex/6.7.0' ] +112ms
  libp2p:mss:select select: write ["/multistream/1.0.0", "/mplex/6.7.0"] +112ms
  libp2p:mss:select select: read "/multistream/1.0.0" +6ms
  libp2p:mss:select select: read "/mplex/6.7.0" +0ms
  libp2p:upgrader /mplex/6.7.0 selected as muxer protocol +6ms
  libp2p:upgrader Successfully upgraded outbound connection +0ms
  libp2p:peer-store:key-book:trace set await write lock +0ms
  libp2p:websockets outbound connection /ip4/127.0.0.1/tcp/8017/ws/p2p/16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 upgraded +129ms
  libp2p:peer-store:key-book:trace set got write lock +1ms
  libp2p:dialer token 0 released +135ms
  libp2p:dialer dial succeeded to 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +1ms
  libp2p:upgrader outbound: starting new stream on [ '/vac/waku/relay/2.0.0-beta2', '/vac/waku/relay/2.0.0' ] +8ms
  libp2p:mplex new initiator stream 0 0 +0ms
  libp2p:mplex:trace initiator stream 0 send { id: 0, type: 'NEW_STREAM (0)', data: '0' } +0ms
  libp2p:mss:select select: write ["/multistream/1.0.0", "/vac/waku/relay/2.0.0-beta2"] +10ms
  libp2p:peer-store:key-book:trace set release write lock +5ms
  libp2p:connection-manager:trace checking limit of maxConnections. current value: 1 of 300 +0ms
  libp2p:mplex:trace initiator stream 0 send {
  id: 0,
  type: 'MESSAGE_INITIATOR (2)',
  data: '132f6d756c746973747265616d2f312e302e300a1c2f7661632f77616b752f72656c61792f322e302e302d62657461320a'
} +1ms
  libp2p:upgrader outbound: starting new stream on [ '/ipfs/id/1.0.0' ] +4ms
  libp2p:mplex new initiator stream 1 1 +4ms
  libp2p:mplex:trace initiator stream 1 send { id: 1, type: 'NEW_STREAM (0)', data: '1' } +1ms
  libp2p:mss:select select: write ["/multistream/1.0.0", "/ipfs/id/1.0.0"] +2ms
  libp2p:mplex:trace incoming message { id: 1, type: 'NEW_STREAM (0)', data: '62da494fd7ac34000ae4eba6' } +1ms
  libp2p:mplex new receiver stream 1 62da494fd7ac34000ae4eba6 +1ms
  libp2p:mplex:trace initiator stream 1 send {
  id: 1,
  type: 'MESSAGE_INITIATOR (2)',
  data: '132f6d756c746973747265616d2f312e302e300a0f2f697066732f69642f312e302e300a'
} +1ms
  libp2p:mplex:trace incoming message {
  id: 1,
  type: 'MESSAGE_INITIATOR (2)',
  data: '132f6d756c746973747265616d2f312e302e300a'
} +0ms
  libp2p:mss:handle read "/multistream/1.0.0" +0ms
  libp2p:mss:handle respond with "/multistream/1.0.0" for "/multistream/1.0.0" +0ms
  libp2p:mplex:trace receiver stream 1 send {
  id: 1,
  type: 'MESSAGE_RECEIVER (1)',
  data: '132f6d756c746973747265616d2f312e302e300a'
} +1ms
  libp2p:mplex:trace incoming message {
  id: 1,
  type: 'MESSAGE_INITIATOR (2)',
  data: '162f7661632f77616b752f72656c61792f322e302e300a'
} +0ms
  libp2p:mss:handle read "/vac/waku/relay/2.0.0" +0ms
  libp2p:mss:handle respond with "/vac/waku/relay/2.0.0" for "/vac/waku/relay/2.0.0" +0ms
  libp2p:upgrader outbound: incoming stream opened on /vac/waku/relay/2.0.0 +3ms
onIncomingStream 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45
  libp2p:gossipsub new peer 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +157ms
  libp2p:gossipsub create inbound stream 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +1ms
for await Set(0) {}
id 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45
streamsOutbound Map(0) {}
pendingStreamsOutbound Set(0) {}
create outbound stream %p 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45
Added Set(1) { '16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45' }
  libp2p:upgrader outbound: starting new stream on [ '/vac/waku/relay/2.0.0-beta2', '/vac/waku/relay/2.0.0' ] +3ms
  libp2p:mplex new initiator stream 2 2 +5ms
  libp2p:upgrader No abort signal was passed while trying to negotiate protocols [ '/vac/waku/relay/2.0.0-beta2', '/vac/waku/relay/2.0.0' ] falling back to default timeout +0ms
  libp2p:mplex:trace initiator stream 2 send { id: 2, type: 'NEW_STREAM (0)', data: '2' } +3ms
  libp2p:mss:select select: write ["/multistream/1.0.0", "/vac/waku/relay/2.0.0-beta2"] +6ms
  libp2p:mplex:trace receiver stream 1 send {
  id: 1,
  type: 'MESSAGE_RECEIVER (1)',
  data: '162f7661632f77616b752f72656c61792f322e302e300a'
} +1ms
  libp2p:mplex:trace incoming message { id: 2, type: 'NEW_STREAM (0)', data: '62da494fd7ac34000ae4eba7' } +0ms
  libp2p:mplex new receiver stream 2 62da494fd7ac34000ae4eba7 +1ms
  libp2p:mplex:trace initiator stream 2 send {
  id: 2,
  type: 'MESSAGE_INITIATOR (2)',
  data: '132f6d756c746973747265616d2f312e302e300a1c2f7661632f77616b752f72656c61792f322e302e302d62657461320a'
} +0ms
  libp2p:mplex:trace incoming message {
  id: 2,
  type: 'MESSAGE_INITIATOR (2)',
  data: '132f6d756c746973747265616d2f312e302e300a'
} +0ms
  libp2p:mss:handle read "/multistream/1.0.0" +5ms
  libp2p:mss:handle respond with "/multistream/1.0.0" for "/multistream/1.0.0" +0ms
  libp2p:mplex:trace receiver stream 2 send {
  id: 2,
  type: 'MESSAGE_RECEIVER (1)',
  data: '132f6d756c746973747265616d2f312e302e300a'
} +1ms
  libp2p:mplex:trace incoming message {
  id: 2,
  type: 'MESSAGE_INITIATOR (2)',
  data: '0f2f697066732f69642f312e302e300a'
} +0ms
  libp2p:mss:handle read "/ipfs/id/1.0.0" +1ms
  libp2p:mss:handle respond with "/ipfs/id/1.0.0" for "/ipfs/id/1.0.0" +0ms
  libp2p:upgrader outbound: incoming stream opened on /ipfs/id/1.0.0 +3ms
  libp2p:peer-store:trace get await read lock +156ms
  libp2p:peer-store:trace get got read lock +0ms
  libp2p:mplex:trace receiver stream 2 send {
  id: 2,
  type: 'MESSAGE_RECEIVER (1)',
  data: '0f2f697066732f69642f312e302e300a'
} +1ms
  libp2p:peer-store:trace get release read lock +0ms
  libp2p:mplex:trace receiver stream 2 send {
  id: 2,
  type: 'MESSAGE_RECEIVER (1)',
  data: 'c7020a24080112206f0c93c855ec4712241492656f48b203284a3931abbabf75244a0152ef483c251a0e2f697066732f69642f312e302e301a132f697066732f69642f707573682f312e302e301a102f697066732f70696e672f312e302e301a1b2f6c69627032702f636972637569742f72656c61792f302e312e301a132f6c69627032702f66657463682f302e302e311a1c2f7661632f77616b752f66696c7465722f322e302e302d62657461311a152f7661632f77616b752f72656c61792f322e302e301a1b2f7661632f77616b752f72656c61792f322e302e302d62657461322234047f000001061f51dd03a5032700250802122103a8f1383791d4b1c8c7bc77fce2292ea3411c09c14416e5fff6fd6e230df7d9462a0a697066732f302e312e3032226a732d6c69627032702f302e302e3020557365724167656e743d7631362e31342e30'
} +1ms
  libp2p:mplex:trace receiver stream 2 send { id: 2, type: 'CLOSE_RECEIVER (3)' } +0ms
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba7 sink end - err: undefined +0ms
  libp2p:mplex:trace incoming message {
  id: 0,
  type: 'MESSAGE_RECEIVER (1)',
  data: '132f6d756c746973747265616d2f312e302e300a'
} +9ms
  libp2p:mss:select select: read "/multistream/1.0.0" +14ms
  libp2p:mplex:trace incoming message {
  id: 0,
  type: 'MESSAGE_RECEIVER (1)',
  data: '1c2f7661632f77616b752f72656c61792f322e302e302d62657461320a'
} +1ms
  libp2p:mss:select select: read "/vac/waku/relay/2.0.0-beta2" +1ms
  libp2p:mplex:trace incoming message {
  id: 1,
  type: 'MESSAGE_RECEIVER (1)',
  data: '132f6d756c746973747265616d2f312e302e300a'
} +1ms
  libp2p:mss:select select: read "/multistream/1.0.0" +0ms
  libp2p:mplex:trace incoming message {
  id: 1,
  type: 'MESSAGE_RECEIVER (1)',
  data: '0f2f697066732f69642f312e302e300a'
} +0ms
  libp2p:mss:select select: read "/ipfs/id/1.0.0" +1ms
  libp2p:mplex:trace incoming message {
  id: 1,
  type: 'MESSAGE_RECEIVER (1)',
  data: '9b030a250802122103a8f1383791d4b1c8c7bc77fce2292ea3411c09c14416e5fff6fd6e230df7d9461208047f000001061f4b120a047f000001061f51dd031a0e2f697066732f69642f312e302e301a152f7661632f77616b752f72656c61792f322e302e301a102f697066732f70696e672f312e302e301a1a2f7661632f77616b752f737761702f322e302e302d62657461311a1b2f7661632f77616b752f73746f72652f322e302e302d6265746134220a047f000001068846dd032a0a697066732f302e312e3032106e696d2d6c69627032702f302e302e3142bf010a250802122103a8f1383791d4b1c8c7bc77fce2292ea3411c09c14416e5fff6fd6e230df7d946120203011a490a2700250802122103a8f1383791d4b1c8c7bc77fce2292ea3411c09c14416e5fff6fd6e230df7d94610c992e996061a0c0a0a047f000001061f51dd031a0a0a08047f000001061f4b2a473045022100dc69c250f9735e433577d777f241f54b34bb975605b37c9ac77a99b5ad9989a70220470664ffc902bb3c29fb2cf6400af92cff1c041a060916435a0be05388cc0b67'
} +1ms
  libp2p:mplex:trace initiator stream 1 send { id: 1, type: 'CLOSE_INITIATOR (4)' } +0ms
  libp2p:mplex:stream:trace initiator stream 1 sink end - err: undefined +12ms
  libp2p:mplex:trace incoming message { id: 1, type: 'CLOSE_RECEIVER (3)' } +1ms
  libp2p:mplex:stream:trace initiator stream 1 closeRead +0ms
  libp2p:mplex:stream:trace initiator stream 1 source end - err: undefined +0ms
  libp2p:mplex initiator stream 1 1 ended +16ms
  libp2p:mplex:trace incoming message {
  id: 1,
  type: 'MESSAGE_INITIATOR (2)',
  data: '200a1e0801121a2f77616b752f322f64656661756c742d77616b752f70726f746f'
} +1ms
  libp2p:gossipsub rpc from 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +20ms
  libp2p:gossipsub subscription update from 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 topic /waku/2/default-waku/proto +0ms
  libp2p:mplex:trace incoming message {
  id: 2,
  type: 'MESSAGE_RECEIVER (1)',
  data: '132f6d756c746973747265616d2f312e302e300a'
} +1ms
  libp2p:mss:select select: read "/multistream/1.0.0" +3ms
  libp2p:mplex:stream:trace initiator stream 1 close +3ms
  libp2p:mplex:stream:trace initiator stream 1 closeRead +0ms
  libp2p:mplex:stream:trace initiator stream 1 closeWrite +0ms
  libp2p:identify received signed peer record from 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +0ms
  libp2p:peer-store:address-book:trace consumePeerRecord await write lock +207ms
  libp2p:peer-store:address-book:trace consumePeerRecord got write lock +0ms
  libp2p:peer-store:address-book stored provided peer record for 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +210ms
  libp2p:peer-store:address-book:trace consumePeerRecord release write lock +2ms
  libp2p:peer-store:proto-book:trace set await write lock +216ms
  libp2p:peer-store:proto-book:trace set got write lock +0ms
  libp2p:peer-store:proto-book stored provided protocols for 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 +218ms
  libp2p:peer-store:proto-book:trace set release write lock +2ms
onPeerConnected 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45
  libp2p:peer-store:metadata-book:trace setValue await write lock +220ms
  libp2p:peer-store:metadata-book:trace setValue got write lock +0ms
  libp2p:peer-store:metadata-book:trace setValue release write lock +1ms
  libp2p:peer-store:metadata-book:trace setValue await write lock +0ms
  libp2p:peer-store:metadata-book:trace setValue got write lock +0ms
  libp2p:peer-store:metadata-book:trace setValue release write lock +1ms
  libp2p:identify identify completed for peer 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45 and protocols [ '/ipfs/id/1.0.0', '/ipfs/ping/1.0.0', '/vac/waku/relay/2.0.0', '/vac/waku/store/2.0.0-beta4', '/vac/waku/swap/2.0.0-beta1' ] +44ms
  libp2p:mplex:trace incoming message {
  id: 2,
  type: 'MESSAGE_RECEIVER (1)',
  data: '1c2f7661632f77616b752f72656c61792f322e302e302d62657461320a'
} +46ms
  libp2p:mss:select select: read "/vac/waku/relay/2.0.0-beta2" +46ms
  libp2p:mplex:trace incoming message { id: 2, type: 'CLOSE_INITIATOR (4)' } +0ms
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba7 closeRead +45ms
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba7 source end - err: undefined +0ms
  libp2p:mplex receiver stream 2 62da494fd7ac34000ae4eba7 ended +49ms
protocol /vac/waku/relay/2.0.0-beta2
connection ConnectionImpl [Connection] {
  id: '6ws37u1658472783188',
  remoteAddr: <Multiaddr 047f000001061f51dd03a5032700250802122103a8f1383791d4b1c8c7bc77fce2292ea3411c09c14416e5fff6fd6e230df7d946 - /ip4/127.0.0.1/tcp/8017/ws/p2p/16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45>,
  remotePeer: Secp256k1PeerIdImpl [PeerId(16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45)] {
    type: 'secp256k1',
    multihash: Digest {
      code: 0,
      size: 37,
      digest: [Uint8Array],
      bytes: [Uint8Array]
    },
    privateKey: undefined,
    publicKey: Uint8Array(37) [
        8,   2,  18,  33,   3, 168, 241,  56,  55,
      145, 212, 177, 200, 199, 188, 119, 252, 226,
       41,  46, 163,  65,  28,   9, 193,  68,  22,
      229, 255, 246, 253, 110,  35,  13, 247, 217,
       70
    ]
  },
  stat: {
    status: 'OPEN',
    direction: 'outbound',
    timeline: { open: 1658472783061, upgraded: 1658472783188 },
    multiplexer: '/mplex/6.7.0',
    encryption: '/noise'
  },
  _newStream: [AsyncFunction: newStream],
  _close: [AsyncFunction: close],
  _getStreams: [Function: getStreams],
  tags: [],
  _closing: false
}
streams [
  {
    close: [Function: close],
    closeRead: [Function: closeRead],
    closeWrite: [Function: closeWrite],
    abort: [Function: abort],
    reset: [Function: reset],
    sink: [AsyncFunction: sink],
    source: {
      next: [Function: next],
      throw: [Function: throw],
      return: [Function: return],
      push: [Function: push],
      end: [Function: end],
      readableLength: [Getter],
      [Symbol(Symbol.asyncIterator)]: [Function: [Symbol.asyncIterator]]
    },
    stat: {
      direction: 'outbound',
      timeline: [Object],
      protocol: '/vac/waku/relay/2.0.0-beta2'
    },
    metadata: {},
    id: 'i0'
  },
  {
    close: [Function: close],
    closeRead: [Function: closeRead],
    closeWrite: [Function: closeWrite],
    abort: [Function: abort],
    reset: [Function: reset],
    sink: [AsyncFunction: sink],
    source: {
      next: [Function: next],
      throw: [Function: throw],
      return: [Function: return],
      push: [Function: push],
      end: [Function: end],
      readableLength: [Getter],
      [Symbol(Symbol.asyncIterator)]: [Function: [Symbol.asyncIterator]]
    },
    stat: { direction: 'outbound', timeline: [Object] },
    metadata: {},
    id: 'i2'
  },
  {
    close: [Function: close],
    closeRead: [Function: closeRead],
    closeWrite: [Function: closeWrite],
    abort: [Function: abort],
    reset: [Function: reset],
    sink: [AsyncFunction: sink],
    source: {
      next: [Function: next],
      throw: [Function: throw],
      return: [Function: return],
      push: [Function: push],
      end: [Function: end],
      readableLength: [Getter],
      [Symbol(Symbol.asyncIterator)]: [Function: [Symbol.asyncIterator]]
    },
    stat: {
      direction: 'inbound',
      timeline: [Object],
      protocol: '/vac/waku/relay/2.0.0'
    },
    metadata: {},
    id: 'r1'
  }
]
  libp2p:upgrader:error could not create new stream Error: Too many outgoing protocol streams
    at ConnectionImpl.newStream [as _newStream] (file:///home/fryorcraken/src/libp2p/js-libp2p/src/upgrader.ts:436:27)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async ConnectionImpl.newStream (file:///home/fryorcraken/src/libp2p/js-libp2p/node_modules/@libp2p/connection/src/index.ts:121:20)
    at async EventTarget.createOutboundStream (file:///home/fryorcraken/src/status-im/js-waku/node_modules/@chainsafe/libp2p-gossipsub/src/index.ts:699:4)
    at async file:///home/fryorcraken/src/status-im/js-waku/node_modules/@chainsafe/libp2p-gossipsub/src/index.ts:491:11 {
  code: 'ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS'
} +0ms
  libp2p:mplex:stream:trace initiator stream 2 close +14ms
  libp2p:mplex:stream:trace initiator stream 2 closeRead +0ms
  libp2p:mplex:stream:trace initiator stream 2 source end - err: undefined +0ms
  libp2p:mplex:stream:trace initiator stream 2 closeWrite +0ms
  libp2p:mplex:trace initiator stream 2 send { id: 2, type: 'CLOSE_INITIATOR (4)' } +14ms
  libp2p:mplex:stream:trace initiator stream 2 sink end - err: undefined +0ms
  libp2p:mplex initiator stream 2 2 ended +13ms
Removing Set(1) { '16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45' }
  libp2p:gossipsub:error createOutboundStream error Error: Too many outgoing protocol streams
    at ConnectionImpl.newStream [as _newStream] (file:///home/fryorcraken/src/libp2p/js-libp2p/src/upgrader.ts:436:27)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async ConnectionImpl.newStream (file:///home/fryorcraken/src/libp2p/js-libp2p/node_modules/@libp2p/connection/src/index.ts:121:20)
    at async EventTarget.createOutboundStream (file:///home/fryorcraken/src/status-im/js-waku/node_modules/@chainsafe/libp2p-gossipsub/src/index.ts:699:4)
    at async file:///home/fryorcraken/src/status-im/js-waku/node_modules/@chainsafe/libp2p-gossipsub/src/index.ts:491:11 {
  code: 'ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS'
} +0ms
for await Set(0) {}
id 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45
streamsOutbound Map(0) {}
pendingStreamsOutbound Set(0) {}
create outbound stream %p 16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45
Added Set(1) { '16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45' }
  libp2p:upgrader outbound: starting new stream on [ '/vac/waku/relay/2.0.0-beta2', '/vac/waku/relay/2.0.0' ] +77ms
  libp2p:mplex new initiator stream 3 3 +1ms
  libp2p:upgrader No abort signal was passed while trying to negotiate protocols [ '/vac/waku/relay/2.0.0-beta2', '/vac/waku/relay/2.0.0' ] falling back to default timeout +0ms
  libp2p:mplex:trace initiator stream 3 send { id: 3, type: 'NEW_STREAM (0)', data: '3' } +1ms
  libp2p:mss:select select: write ["/multistream/1.0.0", "/vac/waku/relay/2.0.0-beta2"] +15ms
  libp2p:mplex:trace initiator stream 3 send {
  id: 3,
  type: 'MESSAGE_INITIATOR (2)',
  data: '132f6d756c746973747265616d2f312e302e300a1c2f7661632f77616b752f72656c61792f322e302e302d62657461320a'
} +0ms
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba7 close +2ms
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba7 closeRead +0ms
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba7 closeWrite +0ms
  libp2p:mplex:trace incoming message { id: 2, type: 'CLOSE_RECEIVER (3)' } +4ms
  libp2p:mplex missing stream 2 +4ms
  libp2p:mplex:trace incoming message {
  id: 3,
  type: 'MESSAGE_RECEIVER (1)',
  data: '132f6d756c746973747265616d2f312e302e300a'
} +0ms
  libp2p:mss:select select: read "/multistream/1.0.0" +4ms
  libp2p:mplex:trace incoming message {
  id: 3,
  type: 'MESSAGE_RECEIVER (1)',
  data: '1c2f7661632f77616b752f72656c61792f322e302e302d62657461320a'
} +1ms
  libp2p:mss:select select: read "/vac/waku/relay/2.0.0-beta2" +1ms
protocol /vac/waku/relay/2.0.0-beta2
connection ConnectionImpl [Connection] {
  id: '6ws37u1658472783188',
  remoteAddr: <Multiaddr 047f000001061f51dd03a5032700250802122103a8f1383791d4b1c8c7bc77fce2292ea3411c09c14416e5fff6fd6e230df7d946 - /ip4/127.0.0.1/tcp/8017/ws/p2p/16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45>,
  remotePeer: Secp256k1PeerIdImpl [PeerId(16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45)] {
    type: 'secp256k1',
    multihash: Digest {
      code: 0,
      size: 37,
      digest: [Uint8Array],
      bytes: [Uint8Array]
    },
    privateKey: undefined,
    publicKey: Uint8Array(37) [
        8,   2,  18,  33,   3, 168, 241,  56,  55,
      145, 212, 177, 200, 199, 188, 119, 252, 226,
       41,  46, 163,  65,  28,   9, 193,  68,  22,
      229, 255, 246, 253, 110,  35,  13, 247, 217,
       70
    ]
  },
  stat: {
    status: 'OPEN',
    direction: 'outbound',
    timeline: { open: 1658472783061, upgraded: 1658472783188 },
    multiplexer: '/mplex/6.7.0',
    encryption: '/noise'
  },
  _newStream: [AsyncFunction: newStream],
  _close: [AsyncFunction: close],
  _getStreams: [Function: getStreams],
  tags: [],
  _closing: false
}
streams [
  {
    close: [Function: close],
    closeRead: [Function: closeRead],
    closeWrite: [Function: closeWrite],
    abort: [Function: abort],
    reset: [Function: reset],
    sink: [AsyncFunction: sink],
    source: {
      next: [Function: next],
      throw: [Function: throw],
      return: [Function: return],
      push: [Function: push],
      end: [Function: end],
      readableLength: [Getter],
      [Symbol(Symbol.asyncIterator)]: [Function: [Symbol.asyncIterator]]
    },
    stat: {
      direction: 'outbound',
      timeline: [Object],
      protocol: '/vac/waku/relay/2.0.0-beta2'
    },
    metadata: {},
    id: 'i0'
  },
  {
    close: [Function: close],
    closeRead: [Function: closeRead],
    closeWrite: [Function: closeWrite],
    abort: [Function: abort],
    reset: [Function: reset],
    sink: [AsyncFunction: sink],
    source: {
      next: [Function: next],
      throw: [Function: throw],
      return: [Function: return],
      push: [Function: push],
      end: [Function: end],
      readableLength: [Getter],
      [Symbol(Symbol.asyncIterator)]: [Function: [Symbol.asyncIterator]]
    },
    stat: { direction: 'outbound', timeline: [Object] },
    metadata: {},
    id: 'i3'
  },
  {
    close: [Function: close],
    closeRead: [Function: closeRead],
    closeWrite: [Function: closeWrite],
    abort: [Function: abort],
    reset: [Function: reset],
    sink: [AsyncFunction: sink],
    source: {
      next: [Function: next],
      throw: [Function: throw],
      return: [Function: return],
      push: [Function: push],
      end: [Function: end],
      readableLength: [Getter],
      [Symbol(Symbol.asyncIterator)]: [Function: [Symbol.asyncIterator]]
    },
    stat: {
      direction: 'inbound',
      timeline: [Object],
      protocol: '/vac/waku/relay/2.0.0'
    },
    metadata: {},
    id: 'r1'
  }
]
  libp2p:upgrader:error could not create new stream Error: Too many outgoing protocol streams
    at ConnectionImpl.newStream [as _newStream] (file:///home/fryorcraken/src/libp2p/js-libp2p/src/upgrader.ts:436:27)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async ConnectionImpl.newStream (file:///home/fryorcraken/src/libp2p/js-libp2p/node_modules/@libp2p/connection/src/index.ts:121:20)
    at async EventTarget.createOutboundStream (file:///home/fryorcraken/src/status-im/js-waku/node_modules/@chainsafe/libp2p-gossipsub/src/index.ts:699:4)
    at async file:///home/fryorcraken/src/status-im/js-waku/node_modules/@chainsafe/libp2p-gossipsub/src/index.ts:491:11 {
  code: 'ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS'
} +18ms
  libp2p:mplex:stream:trace initiator stream 3 close +5ms
  libp2p:mplex:stream:trace initiator stream 3 closeRead +1ms
  libp2p:mplex:stream:trace initiator stream 3 source end - err: undefined +0ms
  libp2p:mplex:stream:trace initiator stream 3 closeWrite +0ms
  libp2p:mplex:trace initiator stream 3 send { id: 3, type: 'CLOSE_INITIATOR (4)' } +2ms
  libp2p:mplex:stream:trace initiator stream 3 sink end - err: undefined +0ms
  libp2p:mplex initiator stream 3 3 ended +3ms
Removing Set(1) { '16Uiu2HAmQ2UBNinKauxQerk9jgCS2ouJkbgZnf1zxe2DpDwcTW45' }
  libp2p:gossipsub:error createOutboundStream error Error: Too many outgoing protocol streams
    at ConnectionImpl.newStream [as _newStream] (file:///home/fryorcraken/src/libp2p/js-libp2p/src/upgrader.ts:436:27)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async ConnectionImpl.newStream (file:///home/fryorcraken/src/libp2p/js-libp2p/node_modules/@libp2p/connection/src/index.ts:121:20)
    at async EventTarget.createOutboundStream (file:///home/fryorcraken/src/status-im/js-waku/node_modules/@chainsafe/libp2p-gossipsub/src/index.ts:699:4)
    at async file:///home/fryorcraken/src/status-im/js-waku/node_modules/@chainsafe/libp2p-gossipsub/src/index.ts:491:11 {
  code: 'ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS'
} +7ms
  libp2p:mplex:trace incoming message { id: 3, type: 'CLOSE_RECEIVER (3)' } +1ms
  libp2p:mplex missing stream 3 +1ms
  libp2p:peer-store:trace getPeers await read lock +10s
  libp2p:peer-store:trace getPeers got read lock +1ms
  libp2p:peer-store:trace getPeers release read lock +3ms
  libp2p libp2p is stopping +15s
  libp2p:transports closing listeners for @libp2p/websockets +15s
  libp2p:transports closing listeners for libp2p/circuit-relay-v1 +0ms
  libp2p:gossipsub stopping +15s
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba6 close +15s
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba6 closeRead +0ms
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba6 source end - err: undefined +0ms
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba6 closeWrite +1ms
  libp2p:mplex:trace receiver stream 1 send { id: 1, type: 'CLOSE_RECEIVER (3)' } +15s
  libp2p:mplex:stream:trace receiver stream 62da494fd7ac34000ae4eba6 sink end - err: undefined +0ms
  libp2p:mplex receiver stream 1 62da494fd7ac34000ae4eba6 ended +15s
  libp2p:gossipsub:score stopped +15s
  libp2p:gossipsub stopped +3ms
  libp2p:connection-manager:auto-dialler stopped +15s
  libp2p:peer-store:proto-book:trace remove await write lock +15s
  libp2p:peer-store:proto-book:trace remove await write lock +0ms
  libp2p:peer-store:proto-book:trace remove await write lock +1ms
  libp2p:mplex:stream:trace initiator stream 0 close +4ms
  libp2p:mplex:stream:trace initiator stream 0 closeRead +1ms
  libp2p:mplex:stream:trace initiator stream 0 source end - err: undefined +0ms
  libp2p:mplex:stream:trace initiator stream 0 closeWrite +0ms
  libp2p:mplex:trace initiator stream 0 send { id: 0, type: 'CLOSE_INITIATOR (4)' } +5ms
  libp2p:mplex:stream:trace initiator stream 0 sink end - err: undefined +1ms
  libp2p:mplex initiator stream 0 0 ended +6ms
  libp2p:connection-manager closing 1 connections +15s
  libp2p:transports all listeners closed +10ms
  libp2p:peer-store:proto-book:trace remove got write lock +5ms
  libp2p:peer-store:proto-book:trace remove release write lock +4ms
  libp2p:peer-store:trace get await read lock +5s
  libp2p:peer-store:proto-book:trace remove await write lock +1ms
  libp2p:peer-store:proto-book:trace remove got write lock +0ms
  libp2p:peer-store:proto-book:trace remove release write lock +3ms
  libp2p:peer-store:trace get await read lock +4ms
  libp2p:peer-store:proto-book:trace remove got write lock +1ms
  libp2p:peer-store:proto-book:trace remove release write lock +2ms
  libp2p:peer-store:trace get await read lock +2ms
  libp2p:peer-store:trace get got read lock +0ms
  libp2p:peer-store:trace get release read lock +1ms
  libp2p:peer-store:address-book:trace getRawEnvelope await read lock +15s
  libp2p:peer-store:proto-book:trace remove got write lock +1ms
  libp2p:peer-store:proto-book:trace remove release write lock +2ms
  libp2p:peer-store:trace get await read lock +2ms
  libp2p:peer-store:trace get got read lock +0ms
  libp2p:peer-store:trace get got read lock +0ms
  libp2p:peer-store:address-book:trace getRawEnvelope got read lock +2ms
  libp2p:peer-store:trace get got read lock +0ms
  libp2p:peer-store:trace get release read lock +1ms
  libp2p:peer-store:trace get release read lock +0ms
  libp2p:peer-store:address-book:trace getRawEnvelope release read lock +1ms
  libp2p:peer-store:trace get release read lock +0ms
  libp2p:peer-store:address-book:trace getRawEnvelope await read lock +0ms
  libp2p:peer-store:address-book:trace getRawEnvelope await read lock +0ms
  libp2p:peer-store:proto-book:trace get wait for read lock +1ms
  libp2p:peer-store:address-book:trace getRawEnvelope await read lock +0ms
  libp2p:peer-store:address-book:trace getRawEnvelope got read lock +0ms
  libp2p:peer-store:address-book:trace getRawEnvelope got read lock +0ms
  libp2p:peer-store:proto-book:trace get got read lock +0ms
  libp2p:peer-store:address-book:trace getRawEnvelope got read lock +1ms
  libp2p:peer-store:address-book:trace getRawEnvelope release read lock +0ms
  libp2p:peer-store:address-book:trace getRawEnvelope release read lock +0ms
  libp2p:peer-store:proto-book:trace get release read lock +1ms
  libp2p:peer-store:address-book:trace getRawEnvelope release read lock +0ms
  libp2p:peer-store:proto-book:trace get wait for read lock +0ms
  libp2p:peer-store:proto-book:trace get wait for read lock +0ms
  libp2p:peer-store:proto-book:trace get wait for read lock +0ms
  libp2p:peer-store:proto-book:trace get got read lock +0ms
  libp2p:peer-store:proto-book:trace get got read lock +0ms
  libp2p:peer-store:proto-book:trace get got read lock +1ms
  libp2p:peer-store:proto-book:trace get release read lock +0ms
  libp2p:peer-store:proto-book:trace get release read lock +0ms
  libp2p:peer-store:proto-book:trace get release read lock +0ms
  libp2p:connection-manager stopped +20ms
  libp2p:mplex error in sink AbortError: The operation was aborted
    at nextAbortHandler (file:///home/fryorcraken/src/status-im/js-waku/node_modules/abortable-iterator/src/index.ts:37:20)
    at AbortSignal.abortHandler (file:///home/fryorcraken/src/status-im/js-waku/node_modules/abortable-iterator/src/index.ts:21:37)
    at AbortSignal.[nodejs.internal.kHybridDispatch] (node:internal/event_target:647:20)
    at AbortSignal.dispatchEvent (node:internal/event_target:589:26)
    at abortSignal (node:internal/abort_controller:283:10)
    at AbortController.abort (node:internal/abort_controller:314:5)
    at AbortSignal.onAbort (/home/fryorcraken/src/status-im/js-waku/node_modules/any-signal/index.js:11:16)
    at AbortSignal.[nodejs.internal.kHybridDispatch] (node:internal/event_target:647:20)
    at AbortSignal.dispatchEvent (node:internal/event_target:589:26)
    at abortSignal (node:internal/abort_controller:283:10)
    at AbortController.abort (node:internal/abort_controller:314:5)
    at MplexStreamMuxer.close (file:///home/fryorcraken/src/status-im/js-waku/node_modules/@libp2p/mplex/src/mplex.ts:137:26)
    at ConnectionImpl.close [as _close] (file:///home/fryorcraken/src/libp2p/js-libp2p/src/upgrader.ts:520:17)
    at async ConnectionImpl.close (file:///home/fryorcraken/src/libp2p/js-libp2p/node_modules/@libp2p/connection/src/index.ts:161:5)
    at async file:///home/fryorcraken/src/libp2p/js-libp2p/src/connection-manager/index.ts:387:13
    at async Promise.all (index 0)
    at async EventTarget._close (file:///home/fryorcraken/src/libp2p/js-libp2p/src/connection-manager/index.ts:396:5)
    at async EventTarget.stop (file:///home/fryorcraken/src/libp2p/js-libp2p/src/connection-manager/index.ts:373:5)
    at async file:///home/fryorcraken/src/libp2p/js-libp2p/node_modules/@libp2p/components/src/index.ts:170:9
    at async Promise.all (index 0)
    at async Components.stop (file:///home/fryorcraken/src/libp2p/js-libp2p/node_modules/@libp2p/components/src/index.ts:168:5)
    at async Promise.all (index 0)
    at async EventTarget.stop (file:///home/fryorcraken/src/libp2p/js-libp2p/src/libp2p.ts:340:5)
    at async Waku.stop (file:///home/fryorcraken/src/status-im/js-waku/src/lib/waku.ts:233:5) {
  type: 'aborted',
  code: 'ABORT_ERR'
} +22ms
  libp2p libp2p has stopped +41ms

Error: Timeout of 20000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/home/fryorcraken/src/status-im/js-waku/src/lib/waku.node.spec.ts)
    at listOnTimeout (node:internal/timers:559:17)
    at processTimers (node:internal/timers:502:7)

@achingbrain
Copy link
Collaborator

This will be fixed by #293

@D4nte
Copy link
Contributor Author

D4nte commented Jul 23, 2022

Do we really need more than one outbound stream per protocol?

@wemeetagain
Copy link
Member

Probably not? Current logic is that the router only tracks / sends data on a single outbound stream per peer.

But it might be nice to support your usecase.

Right now, the router relies entirely on the registrar/topology (and identify protocol) and inbound protocol dials to establish gossipsub streams with peers.

We don't have a way for an application to manually dialProtocol and pass the stream to the router.

@D4nte
Copy link
Contributor Author

D4nte commented Jul 25, 2022

This will be fixed by #293

Yep, tested locally. Looks good. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants