diff options
author | Spencer T Brody <spencer@mongodb.com> | 2017-10-05 18:57:19 -0400 |
---|---|---|
committer | Spencer T Brody <spencer@mongodb.com> | 2017-10-16 18:05:08 -0400 |
commit | ae9262c5c48b378216f276ca150204dff63f04b4 (patch) | |
tree | 5ed77d9babd0ab4be195db05013c232012178f9c /src/mongo/db/repl/bgsync.cpp | |
parent | d8279111b61afac242ddbb9f6d9697bbd14ed9d4 (diff) | |
download | mongo-ae9262c5c48b378216f276ca150204dff63f04b4.tar.gz |
SERVER-31431 Ensure that all state transitions in or out of SECONDARY occur with the global X lock held
Diffstat (limited to 'src/mongo/db/repl/bgsync.cpp')
-rw-r--r-- | src/mongo/db/repl/bgsync.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mongo/db/repl/bgsync.cpp b/src/mongo/db/repl/bgsync.cpp index 1ae84415b4a..f2c369ea0bd 100644 --- a/src/mongo/db/repl/bgsync.cpp +++ b/src/mongo/db/repl/bgsync.cpp @@ -364,6 +364,10 @@ void BackgroundSync::_produce() { // Mark yourself as too stale. _tooStale = true; + // Need to take global X lock to transition out of SECONDARY. + auto opCtx = cc().makeOperationContext(); + Lock::GlobalWrite globalWriteLock(opCtx.get()); + error() << "too stale to catch up -- entering maintenance mode"; log() << "Our newest OpTime : " << lastOpTimeFetched; log() << "Earliest OpTime available is " << syncSourceResp.earliestOpTimeSeen; |