-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Sharding
-
Fully Compatible
-
Sharding 2021-01-11
-
2
Resharding has oplog application rules which different from replication due to the need to be robust to transient duplicate _id values. The implementation for these rules have been implemented in resharding_oplog_application.cpp but aren't being executed outside of C++ unit tests. This ticket represents the capstone for switching resharding to run with this other implementation in all of our JavaScript integration tests.
- Move creating the stash collection out of ReshardingOplogApplier::applyUntilCloneFinishedTs() and instead have RecipientStateMachine create the stash collections before scheduling any of the ReshardingOplogAppliers. We'll likely want creating the stash collection to be a method on ReshardingOplogApplier so it is easy to call from within a unit test.
- Run the resharding_fuzzer_inplace tasks in a patch build with the useReshardingOplogApplicationRules server parameter defaulted to true. Restart the tasks (assuming they pass) at least 4 times to be extra sure.
- Make any other changes based on the patch build results. Also consider carving off these changes into a separate code reviews and/or tickets.
- Remove the useReshardingOplogApplicationRules server parameter and stop calling repl::OplogApplierUtils::applyOplogEntryOrGroupedInsertsCommon().