...
- Rebuild protocol should send the shard ID to a algorithmically selected target for rebuilding a new shard[2]', this shard also should be marked as "constructing" (Rebuild protocol needs to send the status flag together with shard ID)
- Shard[2]' starts to pull data either from shard[0] or shard[1]
- Shard[2]' should follow the splitting protocol
- Only pull the data for the current split version (hash range)
- Exit from "constructing" status on completion
- Notify shard[0] to exit from "splitting" on completion
- All these happen within the rebuild cycle.
Progressive layout and rebalance
In progress....