-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Cluster Scalability
Currently resharding participants rely on long running primary only services that stick around for the entire duration of the resharding operation (ReshardingRecipientService, ReshardingDonorService).
Because of SPM-3977 to remove usage of refreshes in those POS, these POS would become coupled with the explicit commands driving the transitions now. This is also leading to a pattern where the commands drive some state and then itself waits for this state to be persisted. max.hirschhorn@mongodb.com pointed out that instead of coupling these together, it might be better for each new command to instead just have a mini-service that does the task.
I think this would be an improvement over our current control flow which goes from the command to the POS AND vice-versa. But since we have to support the promise based refresh architecture for FCV 8.0 in the newer binaries, it's easier to re-use that implementation for SPM-3977 and the other phases. I think a natural point of doing this work is either after moving all the phase transitions to explicit commands or when moving to push based resharding.