Details
-
Improvement
-
Status: Reopened
-
Major
-
Resolution: Abandoned
-
None
-
None
-
None
-
None
Description
Currently, shard split always create a first replica for each sub-shard on the current host. Then it creates other replicas and their corresponding sub-shards are in RECOVERY state. The effect is that the first replica (on the current host) is always the leader, meaning that if the sub-shards are split themselves, their sub-sub-shards leaders are also on the same host.
This can lead to very unbalanced situation where the same host is the leader for a whole set of shards.
A solution to distribute evenly the leaders is to flag some other replicas with the preferredLeader property during the split. Then a rebalance-leaders command can elect the appropriate leaders. If we do that for each split, then all the sub-shards have their leaders correctly balanced.
To go further, we can improve CollectionsHandler#CollectionOperation to support combined operations. That way a CollectionOperation#SPLITSHARD_OP can trigger a split op, then a wait for split completion op, and then a rebalance leaders op.
Attachments
Issue Links
- links to