feat: support migrate slot range[draft] #2389
Draft
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.
issues: #2355
This draft PR demonstrates how to support migrating slot ranges.
What I Did
1 Migration job - 1 slot range:
SlotRange
structure and changed the migration-related class members from a single slot to a slot range.TODO
TODO represents the items I hope to discuss.
Support multiple slot ranges:
Perform multiple migrations consecutively but do not immediately use
setslot
to update the topology, referring to the example in TestSlotRangeMigrate:This situation also seems to exist in the original single slot migration, and I am not sure if such operations are reasonable.
The current implementation determines the entire slot range to fail and cleans it up, and the user later migrates the entire slot range again.
Do we want to support a more precise failure range? For example,
[start_slot-fail_slot), [fail_slot, end]
. Users can check the status with commands such ascluster info
and then re-migrate the failed slot range by themselves. (Personally, I think it's a bit cumbersome and error-prone)Miscellaneous
Other suggestions are welcome, such as more testing, code optimization, better user interaction, etc.