diff options
Diffstat (limited to 'src/mongo/db/repl')
-rw-r--r-- | src/mongo/db/repl/read_concern_args.cpp | 7 | ||||
-rw-r--r-- | src/mongo/db/repl/read_concern_args.h | 5 |
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; |