feat(kad): Limit in-flight Kademlia queries #3285
Closed
+187
−20
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Limit number of in-flight Kademlia queries to not exceed configured number of substreams
Notes
I went with a design where each query is first inserted into pending queue and
QueryPool
will maintain at most32
queries active at any time, any queries that exceed the limit will remain in pending queue.In order to guarantee insertion order of pending queries I have introduced an abstraction in second commit.
Since constant restricting inbound streams to
32
is now used for outbound too, I moved it up to the root of the crate and changed name to more generic.Links to any relevant issues
#3235
#3236
Open Questions
Not entirely sure how to test higher-level behavior here.
Change checklist