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.
This PR reworks the
vote_rebroadcaster
component, making vote rebroadcasting "smarter". Previously we used a simple queue with a naive filter which rebroadcasted all processed votes. Because a vote can contain up to 255 hashes and the same vote can be processed multiple times depending on the exact timing of election activation, this introduced a rather significant inefficiency where we could be rebroadcasting the same vote multiple times, wasting bandwidth.Here an index is added to track and filter rebroadcasts (with configurable limits, but here are the defaults):
Queuing of votes to rebroadcast is now using weighted fair queuing based on rep tiers. Under saturation higher weight reps' votes will get larger proportion of available bandwidth while still reserving some capacity for lower weight reps (by default,
tier_3
gets ~55%,tier_2
gets ~30% and the rest goes totier_1
reps). Each tier's share scales with a configurable priority coefficient.