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

DHT doesn't properly starts using Accelerated DHT Client when system starts and internet connection isn't stable yet #770

Open
Jorropo opened this issue May 12, 2022 · 3 comments

Comments

@Jorropo
Copy link
Contributor

Jorropo commented May 12, 2022

I have an go-ipfs node starting with systemd, using accelerated dht client, and many of the time it starts but get stuck at 80~100 peers (my connection limits are 600~1000).
Routing client doesn't work (I cannot browse files that aren't already in my blockstore or in one of my bootstrap or peered node).

Restarting IPFS fix the issue.

@guseggert
Copy link
Contributor

Could this be related to ipfs/kubo#8945 ?

@Jorropo
Copy link
Contributor Author

Jorropo commented May 13, 2022

@guseggert no I have the ressource manager disabled.
I have seen this bug since the first release of go-ipfs that included the accelerated DHT client.

@guseggert
Copy link
Contributor

guseggert commented May 26, 2022

This is a slightly broader issue that happens anytime there are errors during crawling (which is likely in some scenarios b/c the crawler goes very hard, so hard that it causes my router to crash). This is really the same problem as the DHT client being unusable when throttled heavily by Resource Manager during bootstrapping.

Accelerated DHT client needs to:

  • Detect when the routing table is likely unusable, keep trying to bootstrap until it's usable, and signal to user
  • Backoff & retry when congestion occurs, e.g. using AIMD (at least for RM limit exhaustion)
  • Another option: hybrid DHT client that falls through to normal DHT lookups while waiting for the initial bootstrapping to finish, then that accelerated client can crawl more gently
    • Or other variations of a hybrid client, this probably requires some theoretical work

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

2 participants