Comments (7)
So after bit more digging in our code, I have actually discovered that we were actually calling start()
twice, so that was the cause 😅
But you actually helped me debugging other problems I had with your last suggestion so, thanks a lot!
from js-libp2p-gossipsub.
Hello @AuHau
Can you let me know the versions you are using?
It seems that gossipsub.start
is called multiple times
from js-libp2p-gossipsub.
Sure, here: https://github.com/rsksmart/rif-communications-pubsub/blob/master/package.json#L45
We construct our libp2p instance mostly like this: https://github.com/rsksmart/rif-communications-pubsub/tree/master/src/libp2p
And we use the pubsub like this: https://github.com/rsksmart/rif-communications-pubsub/blob/master/src/pubsub.ts#L41
from js-libp2p-gossipsub.
So, something is triggering the second start of heartbeat. Nothing bad should be happening because it is already running.
https://github.com/ChainSafe/js-libp2p-gossipsub/blob/v0.4.6/ts/heartbeat.ts#L30
https://github.com/ChainSafe/js-libp2p-gossipsub/blob/v0.4.6/ts/index.ts#L382
We are actually removing this error from the new gossipsub code and just return if already running. However, the start should not be called twice. When you do libp2p.start()
it calls pubsub.start
that calls hearbeat.start
. I could only find in your code libp2p.start
, which seems correct. It would be nice if you could do a console.trace()
in the source of gossipsub before the throw, so that we can see where the second start is coming from
from js-libp2p-gossipsub.
That is great idea! Should have thought of that, will try. Thanks!
from js-libp2p-gossipsub.
Hmm the trace is not much helpful as it is pretty much the same as in the first message for both of calls. I have putted before the start()
so yes there are two call but I think they should be from different libp2p instances.
But made me think. Is it alright to spawn multiple libp2p instances? We need those for tests and maybe there is some "singleton" pattern here that leads to this duplicated call?
from js-libp2p-gossipsub.
But made me think. Is it alright to spawn multiple libp2p instances?
Yes, but they should have different peerIds. It is normal to have multiple logs if you have multiple peer ids. You can also log the peer Id there, IIRC that version should have a gossipsub.peerId or gossipsub._peerId property
from js-libp2p-gossipsub.
Related Issues (20)
- Missed Iwant messages from Lodestar to Nimbus HOT 2
- Export Metrics
- Unbundle metrics with 2 labels
- TypeError when setting direct peers in @chainsafe/libp2p-gossipsub with new libp2p peerStore structure HOT 1
- No recepient after message sent HOT 3
- Unregister protocol on gossipsub.stop
- Do not select backoff peers to graft HOT 1
- Track backoff times in connected peers
- No fanout peers HOT 2
- feat: Support WebRTC Browser-to-Browser HOT 7
- example doesn't work in the browser (insufficent peers) HOT 3
- vuln prototype pollution in dependency protobufjs HOT 2
- GossipSub treats Stream reset as Peer Disconnect HOT 2
- Metrics usage examples - browser client HOT 7
- Make `PublishError.InsufficientPeers` a bit more self-explanatory?
- 11.0.0 not working with bug : CodeError: logger not set HOT 1
- Memory leak in streamsOutbound HOT 2
- new found discovered peers not added to peers HOT 3
- Message delivery not working if publisher is sending message to early after connect
- Track publish time after messages are sent
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from js-libp2p-gossipsub.