diff options
author | matt dannenberg <matt.dannenberg@10gen.com> | 2015-02-10 12:29:46 -0500 |
---|---|---|
committer | Ramon Fernandez <ramon.fernandez@mongodb.com> | 2015-02-11 18:21:22 -0500 |
commit | 6f925ef3c327be1806a9895053023d155148d964 (patch) | |
tree | 3110dbb41f16925c8c900f36a8978e64f23e37e7 | |
parent | 5e579b03fb55259037d0f348ee0c7c1d702b69c9 (diff) | |
download | mongo-6f925ef3c327be1806a9895053023d155148d964.tar.gz |
SERVER-17202 return to RECOVERING if an error is encountered during a rollback to avoid being trapped in ROLLBACK
(cherry picked from commit 5ff520902528d5fff857632e9d03534cf3761884)
-rw-r--r-- | src/mongo/db/repl/rs_rollback.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
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(); |