Switch to use resharding-specific rules for resharding's oplog application

XMLWordPrintableJSON

    • Fully Compatible
    • Sharding 2021-01-11
    • 2
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      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().

              Assignee:
              Max Hirschhorn
              Reporter:
              Max Hirschhorn
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: