summaryrefslogtreecommitdiff
path: root/src/mongo/db/write_concern_options.cpp
diff options
context:
space:
mode:
authormatt dannenberg <matt.dannenberg@10gen.com>2016-01-05 10:29:01 -0500
committermatt dannenberg <matt.dannenberg@10gen.com>2016-02-04 11:22:18 -0500
commit2c2e6a38f559f25559c2b24eff51511c6fbc4a5b (patch)
tree56ea15031ee21b8cb269d2ce6c7bb5b5235c97ed /src/mongo/db/write_concern_options.cpp
parenta818421d4f60b61ef81830af396deb1a3bb998de (diff)
downloadmongo-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.cpp16
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);