summaryrefslogtreecommitdiff
path: root/src/mongo/db/write_concern.cpp
diff options
context:
space:
mode:
authorAndy Schwerin <schwerin@mongodb.com>2015-08-10 19:16:16 -0400
committerAndy Schwerin <schwerin@mongodb.com>2015-08-12 12:04:50 -0400
commit1dfe6870c5974b199a0155c634b470fcb1369f21 (patch)
treee94b52c96d0d1d2a67f6a583f37414a1bab1072c /src/mongo/db/write_concern.cpp
parentbe7db282c80c981882ea67f909eb6be4e53d2d4b (diff)
downloadmongo-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/write_concern.cpp')
-rw-r--r--src/mongo/db/write_concern.cpp15
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");
}
}