diff options
author | matt dannenberg <matt.dannenberg@10gen.com> | 2015-11-20 07:48:37 -0500 |
---|---|---|
committer | matt dannenberg <matt.dannenberg@10gen.com> | 2015-11-20 10:44:38 -0500 |
commit | 463993d94b20b130c8dd1523da5688a561c07862 (patch) | |
tree | 4e583c93028ebe18826590e0808c7c9b0be1237e /src | |
parent | 8b4f6e5aa491c26b135607bb9d16e3a815491b62 (diff) | |
download | mongo-463993d94b20b130c8dd1523da5688a561c07862.tar.gz |
SERVER-21590 reject majority readConcern in PV0
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/dbcommands.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mongo/db/dbcommands.cpp b/src/mongo/db/dbcommands.cpp index a40f44dd210..9bd3abddc95 100644 --- a/src/mongo/db/dbcommands.cpp +++ b/src/mongo/db/dbcommands.cpp @@ -1389,6 +1389,18 @@ bool Command::run(OperationContext* txn, repl::ReplicationCoordinator::Mode::modeReplSet || testingSnapshotBehaviorInIsolation) && readConcernArgs.getLevel() == repl::ReadConcernLevel::kMajorityReadConcern) { + // ReadConcern Majority is not supported in ProtocolVersion 0. + if (!replCoord->isV1ElectionProtocol()) { + auto result = appendCommandStatus( + inPlaceReplyBob, + {ErrorCodes::ReadConcernMajorityNotEnabled, + str::stream() << "Replica sets running protocol version 0 do not support " + "readConcern: majority"}); + inPlaceReplyBob.doneFast(); + replyBuilder->setMetadata(rpc::makeEmptyMetadata()); + return result; + } + Status status = txn->recoveryUnit()->setReadFromMajorityCommittedSnapshot(); // Wait until a snapshot is available. |