diff options
author | matt dannenberg <matt.dannenberg@10gen.com> | 2016-01-05 10:29:01 -0500 |
---|---|---|
committer | matt dannenberg <matt.dannenberg@10gen.com> | 2016-02-04 11:22:18 -0500 |
commit | 2c2e6a38f559f25559c2b24eff51511c6fbc4a5b (patch) | |
tree | 56ea15031ee21b8cb269d2ce6c7bb5b5235c97ed /src/mongo/db/write_concern_options.cpp | |
parent | a818421d4f60b61ef81830af396deb1a3bb998de (diff) | |
download | mongo-2c2e6a38f559f25559c2b24eff51511c6fbc4a5b.tar.gz |
SERVER-22276 SERVER-22277 implement "j" flag in write concern apply to secondary as well as primary
Diffstat (limited to 'src/mongo/db/write_concern_options.cpp')
-rw-r--r-- | src/mongo/db/write_concern_options.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/mongo/db/write_concern_options.cpp b/src/mongo/db/write_concern_options.cpp index b099d868a96..58af7b36a9d 100644 --- a/src/mongo/db/write_concern_options.cpp +++ b/src/mongo/db/write_concern_options.cpp @@ -72,6 +72,7 @@ WriteConcernOptions::WriteConcernOptions(const std::string& mode, : syncMode(sync), wNumNodes(0), wMode(mode), wTimeout(durationCount<Milliseconds>(timeout)) {} Status WriteConcernOptions::parse(const BSONObj& obj) { + reset(); if (obj.isEmpty()) { return Status(ErrorCodes::FailedToParse, "write concern object cannot be empty"); } @@ -94,10 +95,11 @@ Status WriteConcernOptions::parse(const BSONObj& obj) { return Status(ErrorCodes::FailedToParse, "fsync and j options cannot be used together"); if (j) { - syncMode = JOURNAL; - } - if (fsync) { - syncMode = FSYNC; + syncMode = SyncMode::JOURNAL; + } else if (fsync) { + syncMode = SyncMode::FSYNC; + } else if (!jEl.eoo()) { + syncMode = SyncMode::NONE; } BSONElement e = obj["w"]; @@ -172,10 +174,12 @@ BSONObj WriteConcernOptions::toBSON() const { builder.append("w", wMode); } - if (syncMode == FSYNC) { + if (syncMode == SyncMode::FSYNC) { builder.append("fsync", true); - } else if (syncMode == JOURNAL) { + } else if (syncMode == SyncMode::JOURNAL) { builder.append("j", true); + } else if (syncMode == SyncMode::NONE) { + builder.append("j", false); } builder.append("wtimeout", wTimeout); |