Shuffle the segments when rebalancing the table to avoid creating hotspot servers #5197
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.
When new servers are added to an existing replica-group based table
and rebalance is triggered, current behavior will assign segments
in alphabetical order, which might move only the new segments to
the new added servers. Because queries tend to query the most recent
segments, this behavior might cause new added servers to become the
hotspot servers.
To address this issue, we shuffle the segments so that old and new
segments can be balanced assigned.
We use the hash of the table name as the random seed to shuffle the
segments so that the result is deterministic.
It is a little bit tricky to write a test case for this. Since the
change is straight-forward and the existing tests already have
pretty good coverage, after manually verified the expected behavior,
no new test is added.