diff options
Diffstat (limited to 'src/mongo/db/repl/rs_rollback.cpp')
| -rw-r--r-- | src/mongo/db/repl/rs_rollback.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/mongo/db/repl/rs_rollback.cpp b/src/mongo/db/repl/rs_rollback.cpp index 50bd79e0223..f1a9c2d3493 100644 --- a/src/mongo/db/repl/rs_rollback.cpp +++ b/src/mongo/db/repl/rs_rollback.cpp @@ -947,10 +947,11 @@ Status _syncRollback(OperationContext* opCtx, invariant(commonPoint >= committedSnapshot); try { - ON_BLOCK_EXIT([&] { - auto status = replicationProcess->incrementRollbackID(opCtx); - fassert(40497, status); - }); + // It is always safe to increment the rollback ID first, even if we fail to complete + // the rollback. + auto status = replicationProcess->incrementRollbackID(opCtx); + fassert(40497, status); + syncFixUp(opCtx, how, rollbackSource, replCoord, replicationProcess); if (MONGO_FAIL_POINT(rollbackExitEarlyAfterCollectionDrop)) { |
