summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl')
-rw-r--r--src/mongo/db/repl/read_concern_args.cpp7
-rw-r--r--src/mongo/db/repl/read_concern_args.h5
2 files changed, 11 insertions, 1 deletions
diff --git a/src/mongo/db/repl/read_concern_args.cpp b/src/mongo/db/repl/read_concern_args.cpp
index f4260b4d62d..8d73a1db218 100644
--- a/src/mongo/db/repl/read_concern_args.cpp
+++ b/src/mongo/db/repl/read_concern_args.cpp
@@ -104,6 +104,10 @@ bool ReadConcernArgs::hasLevel() const {
return _level.is_initialized();
}
+bool ReadConcernArgs::hasOriginalLevel() const {
+ return _originalLevel.is_initialized();
+}
+
boost::optional<OpTime> ReadConcernArgs::getArgsOpTime() const {
return _opTime;
}
@@ -184,6 +188,7 @@ Status ReadConcernArgs::initialize(const BSONElement& readConcernElem) {
<< " must be either 'local', 'majority', "
"'linearizable', 'available', or 'snapshot'");
}
+ _originalLevel = _level;
} else {
return Status(ErrorCodes::InvalidOptions,
str::stream() << "Unrecognized option in " << kReadConcernFieldName
@@ -268,7 +273,7 @@ Status ReadConcernArgs::upconvertReadConcernLevelToSnapshot() {
<< "' is provided");
}
- _originalLevel = _level ? *_level : ReadConcernLevel::kLocalReadConcern;
+ _originalLevel = _level;
_level = ReadConcernLevel::kSnapshotReadConcern;
return Status::OK();
}
diff --git a/src/mongo/db/repl/read_concern_args.h b/src/mongo/db/repl/read_concern_args.h
index 5d473d580a8..be762523c81 100644
--- a/src/mongo/db/repl/read_concern_args.h
+++ b/src/mongo/db/repl/read_concern_args.h
@@ -121,6 +121,11 @@ public:
bool hasLevel() const;
/**
+ * Checks whether _originalLevel is explicitly set.
+ */
+ bool hasOriginalLevel() const;
+
+ /**
* Returns the opTime. Deprecated: will be replaced with getArgsAfterClusterTime.
*/
boost::optional<OpTime> getArgsOpTime() const;