diff options
author | Judah Schvimer <judah@mongodb.com> | 2016-11-15 09:53:47 -0500 |
---|---|---|
committer | Judah Schvimer <judah@mongodb.com> | 2016-11-15 09:53:47 -0500 |
commit | 1ebe71d22dfa865fd451909a666305f581302f5c (patch) | |
tree | 364ff96823ecfb6946f3f90a9715a785f07f5ea3 | |
parent | b476c357ac3bee4134d8fca884258460b214ebd8 (diff) | |
download | mongo-1ebe71d22dfa865fd451909a666305f581302f5c.tar.gz |
SERVER-27028 linearizable read concern checks if node is still primary before it writes noop
-rw-r--r-- | src/mongo/db/read_concern.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mongo/db/read_concern.cpp b/src/mongo/db/read_concern.cpp index 81b1d3ebb75..65ec555eaf7 100644 --- a/src/mongo/db/read_concern.cpp +++ b/src/mongo/db/read_concern.cpp @@ -143,6 +143,12 @@ Status waitForLinearizableReadConcern(OperationContext* txn) { ScopedTransaction transaction(txn, MODE_IX); Lock::DBLock lk(txn->lockState(), "local", MODE_IX); Lock::CollectionLock lock(txn->lockState(), "local.oplog.rs", MODE_IX); + + if (!replCoord->canAcceptWritesForDatabase("admin")) { + return {ErrorCodes::NotMaster, + "No longer primary when waiting for linearizable read concern"}; + } + MONGO_WRITE_CONFLICT_RETRY_LOOP_BEGIN { WriteUnitOfWork uow(txn); |