Fix SelfRateLimiter breaks the sequence of delayed_requests. #5903
+72
−1
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.
Issue Addressed
I noticed that
SelfRateLimiter::next_peer_request_ready()
breaks the sequence of the requests in itsdelayed_requests
.For example, if there are RequestIds in
delayed_requests
in the sequence of2, 3, 4, 5
. After runningnext_peer_request_ready()
, the sequence will be4, 5, 3
although we expect3, 4, 5
. This happens becausepush_back
is used to requeue.Proposed Changes
Use
push_front
instead ofpush_back
to maintain the correct sequence of requests.