diff options
author | Lingzhi Deng <lingzhi.deng@mongodb.com> | 2019-03-27 17:59:17 -0400 |
---|---|---|
committer | Lingzhi Deng <lingzhi.deng@mongodb.com> | 2019-03-27 18:06:15 -0400 |
commit | 74fd169e8867b4633d4c1677055dda74e3460238 (patch) | |
tree | 0b7d4a5a4bc8f5ceffaee6301e174a07ab99cf89 /src | |
parent | 109129eb5f46419e852b65eb35f935194d17fd5d (diff) | |
download | mongo-74fd169e8867b4633d4c1677055dda74e3460238.tar.gz |
SERVER-39672: default to local if no read concern specified for a multi-statment transaction
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/repl/read_concern_args.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/repl/read_concern_args_test.cpp | 9 |
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 ae728d08f23..be12bb924b9 100644 --- a/src/mongo/db/repl/read_concern_args.cpp +++ b/src/mongo/db/repl/read_concern_args.cpp @@ -106,7 +106,8 @@ ReadConcernLevel ReadConcernArgs::getLevel() const { } ReadConcernLevel ReadConcernArgs::getOriginalLevel() const { - return _originalLevel.value_or(getLevel()); + // If no read concern specified, default to "local" + return _originalLevel.value_or(ReadConcernLevel::kLocalReadConcern); } bool ReadConcernArgs::hasLevel() const { diff --git a/src/mongo/db/repl/read_concern_args_test.cpp b/src/mongo/db/repl/read_concern_args_test.cpp index 6eb88779e57..ed6ec48875c 100644 --- a/src/mongo/db/repl/read_concern_args_test.cpp +++ b/src/mongo/db/repl/read_concern_args_test.cpp @@ -510,6 +510,7 @@ TEST(UpconvertReadConcernLevelToSnapshot, EmptyLevel) { ASSERT_OK(readConcern.upconvertReadConcernLevelToSnapshot()); ASSERT(ReadConcernLevel::kSnapshotReadConcern == readConcern.getLevel()); + ASSERT(ReadConcernLevel::kLocalReadConcern == readConcern.getOriginalLevel()); } TEST(UpconvertReadConcernLevelToSnapshot, LevelLocal) { @@ -522,6 +523,7 @@ TEST(UpconvertReadConcernLevelToSnapshot, LevelLocal) { ASSERT_OK(readConcern.upconvertReadConcernLevelToSnapshot()); ASSERT(ReadConcernLevel::kSnapshotReadConcern == readConcern.getLevel()); + ASSERT(ReadConcernLevel::kLocalReadConcern == readConcern.getOriginalLevel()); } TEST(UpconvertReadConcernLevelToSnapshot, LevelMajority) { @@ -535,6 +537,7 @@ TEST(UpconvertReadConcernLevelToSnapshot, LevelMajority) { ASSERT_OK(readConcern.upconvertReadConcernLevelToSnapshot()); ASSERT(ReadConcernLevel::kSnapshotReadConcern == readConcern.getLevel()); + ASSERT(ReadConcernLevel::kMajorityReadConcern == readConcern.getOriginalLevel()); } TEST(UpconvertReadConcernLevelToSnapshot, LevelSnapshot) { @@ -548,6 +551,7 @@ TEST(UpconvertReadConcernLevelToSnapshot, LevelSnapshot) { ASSERT_OK(readConcern.upconvertReadConcernLevelToSnapshot()); ASSERT(ReadConcernLevel::kSnapshotReadConcern == readConcern.getLevel()); + ASSERT(ReadConcernLevel::kSnapshotReadConcern == readConcern.getOriginalLevel()); } TEST(UpconvertReadConcernLevelToSnapshot, LevelSnapshotWithAtClusterTime) { @@ -565,6 +569,7 @@ TEST(UpconvertReadConcernLevelToSnapshot, LevelSnapshotWithAtClusterTime) { ASSERT_OK(readConcern.upconvertReadConcernLevelToSnapshot()); ASSERT(ReadConcernLevel::kSnapshotReadConcern == readConcern.getLevel()); + ASSERT(ReadConcernLevel::kSnapshotReadConcern == readConcern.getOriginalLevel()); ASSERT_TRUE(readConcern.getArgsAtClusterTime()); } @@ -581,6 +586,7 @@ TEST(UpconvertReadConcernLevelToSnapshot, AfterClusterTime) { ASSERT_OK(readConcern.upconvertReadConcernLevelToSnapshot()); ASSERT(ReadConcernLevel::kSnapshotReadConcern == readConcern.getLevel()); + ASSERT(ReadConcernLevel::kLocalReadConcern == readConcern.getOriginalLevel()); ASSERT_TRUE(readConcern.getArgsAfterClusterTime()); } @@ -595,6 +601,7 @@ TEST(UpconvertReadConcernLevelToSnapshot, LevelAvailable) { ASSERT_NOT_OK(readConcern.upconvertReadConcernLevelToSnapshot()); ASSERT(ReadConcernLevel::kAvailableReadConcern == readConcern.getLevel()); + ASSERT(ReadConcernLevel::kAvailableReadConcern == readConcern.getOriginalLevel()); } TEST(UpconvertReadConcernLevelToSnapshot, LevelLinearizable) { @@ -608,6 +615,7 @@ TEST(UpconvertReadConcernLevelToSnapshot, LevelLinearizable) { ASSERT_NOT_OK(readConcern.upconvertReadConcernLevelToSnapshot()); ASSERT(ReadConcernLevel::kLinearizableReadConcern == readConcern.getLevel()); + ASSERT(ReadConcernLevel::kLinearizableReadConcern == readConcern.getOriginalLevel()); } TEST(UpconvertReadConcernLevelToSnapshot, AfterOpTime) { @@ -624,6 +632,7 @@ TEST(UpconvertReadConcernLevelToSnapshot, AfterOpTime) { ASSERT_NOT_OK(readConcern.upconvertReadConcernLevelToSnapshot()); ASSERT(ReadConcernLevel::kLocalReadConcern == readConcern.getLevel()); + ASSERT(ReadConcernLevel::kLocalReadConcern == readConcern.getOriginalLevel()); ASSERT_TRUE(readConcern.getArgsOpTime()); } |