From 6f925ef3c327be1806a9895053023d155148d964 Mon Sep 17 00:00:00 2001 From: matt dannenberg Date: Tue, 10 Feb 2015 12:29:46 -0500 Subject: SERVER-17202 return to RECOVERING if an error is encountered during a rollback to avoid being trapped in ROLLBACK (cherry picked from commit 5ff520902528d5fff857632e9d03534cf3761884) --- src/mongo/db/repl/rs_rollback.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/mongo/db/repl/rs_rollback.cpp b/src/mongo/db/repl/rs_rollback.cpp index 0ff7e538aef..bdeca700cf1 100644 --- a/src/mongo/db/repl/rs_rollback.cpp +++ b/src/mongo/db/repl/rs_rollback.cpp @@ -780,6 +780,14 @@ namespace { } catch (...) { replCoord->incrementRollbackID(); + + if (!replCoord->setFollowerMode(MemberState::RS_RECOVERING)) { + warning() << "Failed to transition into " << + MemberState(MemberState::RS_RECOVERING) << "; expected to be in state " << + MemberState(MemberState::RS_ROLLBACK) << "but found self in " << + replCoord->getMemberState(); + } + throw; } replCoord->incrementRollbackID(); -- cgit v1.2.1