summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/rs_rollback.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/rs_rollback.cpp')
-rw-r--r--src/mongo/db/repl/rs_rollback.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/mongo/db/repl/rs_rollback.cpp b/src/mongo/db/repl/rs_rollback.cpp
index 8b8a4d37eca..2bd919e53c6 100644
--- a/src/mongo/db/repl/rs_rollback.cpp
+++ b/src/mongo/db/repl/rs_rollback.cpp
@@ -97,6 +97,7 @@ using std::unique_ptr;
namespace repl {
MONGO_FAIL_POINT_DEFINE(rollbackExitEarlyAfterCollectionDrop);
+MONGO_FAIL_POINT_DEFINE(rollbackViaRefetchHangCommonPointBeforeReplCommitPoint);
using namespace rollback_internal;
@@ -1282,6 +1283,14 @@ Status _syncRollback(OperationContext* opCtx,
"Rollback common point",
"commonPoint"_attr = commonPointOpTime);
+ // This failpoint is used for testing the invariant below.
+ if (MONGO_unlikely(rollbackViaRefetchHangCommonPointBeforeReplCommitPoint.shouldFail()) &&
+ (commonPointOpTime.getTimestamp() < lastCommittedOpTime.getTimestamp())) {
+ LOGV2(6009600,
+ "Hanging due to rollbackViaRefetchHangCommonPointBeforeReplCommitPoint failpoint");
+ rollbackViaRefetchHangCommonPointBeforeReplCommitPoint.pauseWhileSet(opCtx);
+ }
+
// Rollback common point should be >= the replication commit point.
invariant(commonPointOpTime.getTimestamp() >= lastCommittedOpTime.getTimestamp());
invariant(commonPointOpTime >= lastCommittedOpTime);