summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/bgsync.cpp
diff options
context:
space:
mode:
authorKyle Suarez <kyle.suarez@mongodb.com>2018-02-28 09:37:40 -0500
committerKyle Suarez <kyle.suarez@mongodb.com>2018-02-28 09:37:40 -0500
commit3ac67d8c605b483398863657abcdffac26aae85e (patch)
tree3ff9766796fd32e4a7d6f8fe2e39bbc97a6262d8 /src/mongo/db/repl/bgsync.cpp
parenta0173c12306a457d3b653daea77966c6748e202a (diff)
downloadmongo-3ac67d8c605b483398863657abcdffac26aae85e.tar.gz
SERVER-32588 create parameter to force rollback via refetch
Set the forceRollbackViaRefetch parameter to always use the rollback via refetch algorithm during rollback, even if the storage engine supports rollback via recover to stable timestamp.
Diffstat (limited to 'src/mongo/db/repl/bgsync.cpp')
-rw-r--r--src/mongo/db/repl/bgsync.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mongo/db/repl/bgsync.cpp b/src/mongo/db/repl/bgsync.cpp
index 2585c46582d..dd56f8a3856 100644
--- a/src/mongo/db/repl/bgsync.cpp
+++ b/src/mongo/db/repl/bgsync.cpp
@@ -78,6 +78,11 @@ const auto defaultBatchSize = (16 * 1024 * 1024) / 12 * 10;
// The batchSize to use for the find/getMore queries called by the OplogFetcher
MONGO_EXPORT_STARTUP_SERVER_PARAMETER(bgSyncOplogFetcherBatchSize, int, defaultBatchSize);
+// If 'forceRollbackViaRefetch' is true, always perform rollbacks via the refetch algorithm, even if
+// the storage engine supports rollback via recover to timestamp.
+constexpr bool forceRollbackViaRefetchByDefault = false;
+MONGO_EXPORT_SERVER_PARAMETER(forceRollbackViaRefetch, bool, forceRollbackViaRefetchByDefault);
+
/**
* Extends DataReplicatorExternalStateImpl to be member state aware.
*/
@@ -646,7 +651,7 @@ void BackgroundSync::_runRollback(OperationContext* opCtx,
};
auto storageEngine = opCtx->getServiceContext()->getGlobalStorageEngine();
- if (storageEngine->supportsRecoverToStableTimestamp()) {
+ if (!forceRollbackViaRefetch.load() && storageEngine->supportsRecoverToStableTimestamp()) {
_runRollbackViaRecoverToCheckpoint(
opCtx, source, &localOplog, storageInterface, getConnection);
} else {