diff options
author | Andy Schwerin <schwerin@mongodb.com> | 2015-08-10 19:16:16 -0400 |
---|---|---|
committer | Andy Schwerin <schwerin@mongodb.com> | 2015-08-12 12:04:50 -0400 |
commit | 1dfe6870c5974b199a0155c634b470fcb1369f21 (patch) | |
tree | e94b52c96d0d1d2a67f6a583f37414a1bab1072c /src/mongo/db | |
parent | be7db282c80c981882ea67f909eb6be4e53d2d4b (diff) | |
download | mongo-1dfe6870c5974b199a0155c634b470fcb1369f21.tar.gz |
SERVER-19852 Allow CSRS config servers to accept any legal write concern for a replica set.
Diffstat (limited to 'src/mongo/db')
-rw-r--r-- | src/mongo/db/write_concern.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/mongo/db/write_concern.cpp b/src/mongo/db/write_concern.cpp index 6455834fffd..7ce188de192 100644 --- a/src/mongo/db/write_concern.cpp +++ b/src/mongo/db/write_concern.cpp @@ -130,15 +130,16 @@ Status validateWriteConcern(const WriteConcernOptions& writeConcern) { const repl::ReplicationCoordinator::Mode replMode = repl::getGlobalReplicationCoordinator()->getReplicationMode(); - if (isConfigServer || replMode == repl::ReplicationCoordinator::modeNone) { - // Note that config servers can be replicated (have an oplog), but we still don't allow - // w > 1 - + if (isConfigServer && replMode != repl::ReplicationCoordinator::modeReplSet) { + // SCCC config servers can have a master-slave oplog, but we still don't allow w > 1. if (writeConcern.wNumNodes > 1) { return Status(ErrorCodes::BadValue, - string("cannot use 'w' > 1 ") + (isConfigServer - ? "on a config server host" - : "when a host is not replicated")); + "cannot use 'w' > 1 on a sync cluster connection config server host"); + } + } + if (replMode == repl::ReplicationCoordinator::modeNone) { + if (writeConcern.wNumNodes > 1) { + return Status(ErrorCodes::BadValue, "cannot use 'w' > 1 when a host is not replicated"); } } |