Comments (8)
This is a little tricky, there is no well-defined event that says "bootstrap complete".
Perhaps when enough peers have connected?
from go-libp2p-daemon.
as a workaround, the application can poll until enough connections have been created (just a few would be enough) using LIST_PEERS
.
from go-libp2p-daemon.
So i can call LIST_PEERS
to wait for N connections and if there some, then i can call for PROVIDE
?
from go-libp2p-daemon.
The problem here comes from the fact that the DHT table is empty on start, and there's a delay before starting the periodic DHT bootstrap process.
An easy (and possibly correct) fix is to seed the routing table with the bootstrap peers. This is what go-ethereum does (just as a data point). So any queries coming performed between the startup and the first round of bootstrapping would use the bootstrap peers.
from go-libp2p-daemon.
@cheatfate I've reviewed some code and I wanted to ask you: are you using the bootstrap
option when starting the daemon? This option explicitly connects to IPFS bootstrap peers (or the nodes you provide it) on startup, and then triggers periodic DHT Bootstrap. However, it is true that the control socket is opened before this happens.
from go-libp2p-daemon.
Yes i'm using -b
flag, because otherwise DHT
is always empty.
from go-libp2p-daemon.
Please file an issue against the DHT for this.
from go-libp2p-daemon.
The main solution here is calling LIST PEERS
to wait for the number of connected peers you desire before calling PROVIDE
or FIND_PROVIDERS
. There's work in parallel to make bootstrapping faster, but that's tracked separately.
from go-libp2p-daemon.
Related Issues (20)
- Graceful shutdown
- Update build to stop using gx
- Panic on launch with gossipsub HOT 4
- Crash on daemon shutdown HOT 4
- Any instruction? Examples? HOT 1
- Print version information in help / --version HOT 1
- Cannot build xerrors on MacOS go1.13 HOT 3
- `Stream.reset`?
- Windows failure due to prometheus/client_golang HOT 1
- Missing module with go 1.12
- Howto connect to daemon HOT 6
- Remove secio usage as default connection encryption
- Running with configuration file HOT 2
- creack/pty v1.1.7 needs to be upgraded to v.1.1.11 HOT 1
- Unexpected behavior when trying to connect to bootstrap nodes HOT 11
- Usage Documentation HOT 1
- Bad error message when running p2pd with no arguments
- Listen flag is confusing
- Resurrect project by updating go-libp2p version HOT 2
- manual release created (v0.5.0)
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 go-libp2p-daemon.