diff options
author | Samy Lanka <samy.lanka@mongodb.com> | 2021-08-20 13:15:26 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-08-20 14:00:42 +0000 |
commit | f8a9735544d43a9a3a6bb607bdc6c893369cf61e (patch) | |
tree | 9ef9f72b4e747a159b0873436dfa708dbc392db0 /src/mongo/db | |
parent | f40cb9ac69837355e3fc011d4c8fdd7cbb8648ab (diff) | |
download | mongo-f8a9735544d43a9a3a6bb607bdc6c893369cf61e.tar.gz |
SERVER-59293 Remove featureFlagDefaultReadConcernLocal
Diffstat (limited to 'src/mongo/db')
-rw-r--r-- | src/mongo/db/read_write_concern_defaults.cpp | 12 | ||||
-rw-r--r-- | src/mongo/db/read_write_concern_defaults_test.cpp | 323 | ||||
-rw-r--r-- | src/mongo/db/repl/repl_server_parameters.idl | 8 | ||||
-rw-r--r-- | src/mongo/db/service_entry_point_common.cpp | 6 |
4 files changed, 120 insertions, 229 deletions
diff --git a/src/mongo/db/read_write_concern_defaults.cpp b/src/mongo/db/read_write_concern_defaults.cpp index e73f8b04afd..8aad8721814 100644 --- a/src/mongo/db/read_write_concern_defaults.cpp +++ b/src/mongo/db/read_write_concern_defaults.cpp @@ -200,12 +200,6 @@ void ReadWriteConcernDefaults::refreshIfNecessary(OperationContext* opCtx) { } repl::ReadConcernArgs ReadWriteConcernDefaults::getImplicitDefaultReadConcern() { - const bool isDefaultRCLocalFeatureFlagEnabled = - serverGlobalParams.featureCompatibility.isVersionInitialized() && - repl::feature_flags::gDefaultRCLocal.isEnabled(serverGlobalParams.featureCompatibility); - if (!isDefaultRCLocalFeatureFlagEnabled) { - return repl::ReadConcernArgs(); - } return repl::ReadConcernArgs(repl::ReadConcernLevel::kLocalReadConcern); } @@ -227,12 +221,8 @@ ReadWriteConcernDefaults::RWConcernDefaultAndTime ReadWriteConcernDefaults::getD OperationContext* opCtx) { auto cached = _getDefaultCWRWCFromDisk(opCtx).value_or(RWConcernDefaultAndTime()); - const bool isDefaultRCLocalFeatureFlagEnabled = - serverGlobalParams.featureCompatibility.isVersionInitialized() && - repl::feature_flags::gDefaultRCLocal.isEnabled(serverGlobalParams.featureCompatibility); - // Only overwrite the default read concern and its source if it has already been set on mongos. - if (isDefaultRCLocalFeatureFlagEnabled && !cached.getDefaultReadConcernSource()) { + if (!cached.getDefaultReadConcernSource()) { if (!cached.getDefaultReadConcern() || cached.getDefaultReadConcern().get().isEmpty()) { auto rcDefault = getImplicitDefaultReadConcern(); cached.setDefaultReadConcern(rcDefault); diff --git a/src/mongo/db/read_write_concern_defaults_test.cpp b/src/mongo/db/read_write_concern_defaults_test.cpp index a57c977ddeb..556fc740c67 100644 --- a/src/mongo/db/read_write_concern_defaults_test.cpp +++ b/src/mongo/db/read_write_concern_defaults_test.cpp @@ -60,10 +60,6 @@ protected: ReadWriteConcernDefaultsLookupMock _lookupMock; - bool _isDefaultRCLocalEnabled{ - serverGlobalParams.featureCompatibility.isVersionInitialized() && - repl::feature_flags::gDefaultRCLocal.isEnabled(serverGlobalParams.featureCompatibility)}; - ServiceContext::UniqueOperationContext _opCtxHolder{makeOperationContext()}; OperationContext* const _opCtx{_opCtxHolder.get()}; }; @@ -74,16 +70,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithAbsentCWRWCWithImplicitWC // By not calling _lookupMock.setLookupCallReturnValue(), tests _defaults.lookup() returning // boost::none. auto defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); ASSERT(!defaults.getDefaultWriteConcern()); ASSERT(!isCWWCSet()); @@ -100,16 +92,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithAbsentCWRWCWithImplicitWC // boost::none. ASSERT(!isCWWCSet()); auto defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); ASSERT(defaults.getDefaultWriteConcern()); ASSERT_EQ(WriteConcernOptions::kMajority, defaults.getDefaultWriteConcern().get().wMode); @@ -127,16 +115,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithCWRWCNeverSetWithImplicit ASSERT(!isCWWCSet()); auto defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); ASSERT(!defaults.getDefaultWriteConcern()); ASSERT(!defaults.getUpdateOpTime()); @@ -152,16 +136,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithCWRWCNeverSetWithImplicit ASSERT(!isCWWCSet()); _lookupMock.setLookupCallReturnValue({}); auto defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); ASSERT(defaults.getDefaultWriteConcern()); ASSERT_EQ(WriteConcernOptions::kMajority, defaults.getDefaultWriteConcern().get().wMode); @@ -181,16 +161,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithUnsetCWRWCWithImplicitWCW ASSERT(!isCWWCSet()); auto defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); ASSERT(!defaults.getDefaultWriteConcern()); ASSERT_EQ(Timestamp(1, 2), *defaults.getUpdateOpTime()); @@ -209,16 +185,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithUnsetCWRWCWithImplicitWCM ASSERT(!isCWWCSet()); auto defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); ASSERT(defaults.getDefaultWriteConcern()); ASSERT_EQ(WriteConcernOptions::kMajority, defaults.getDefaultWriteConcern().get().wMode); @@ -235,15 +207,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithCWRWCNotSetThenSetWithImp _lookupMock.setLookupCallReturnValue({}); ASSERT(!isCWWCSet()); auto oldDefaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(oldDefaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(oldDefaults.getDefaultReadConcernSource()); - ASSERT(oldDefaults.getDefaultReadConcernSource() == - DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!oldDefaults.getDefaultReadConcernSource()); - } + + ASSERT(oldDefaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(oldDefaults.getDefaultReadConcernSource()); + ASSERT(oldDefaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); + ASSERT(!oldDefaults.getDefaultWriteConcern()); ASSERT(!oldDefaults.getUpdateOpTime()); ASSERT(!oldDefaults.getUpdateWallClockTime()); @@ -267,12 +236,9 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithCWRWCNotSetThenSetWithImp auto defaults = getDefault(); ASSERT(defaults.getDefaultReadConcern()->getLevel() == repl::ReadConcernLevel::kLocalReadConcern); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); - } else { - ASSERT(!defaults.getDefaultReadConcernSource()); - } + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); + ASSERT_EQ(4, defaults.getDefaultWriteConcern()->wNumNodes); ASSERT_EQ(Timestamp(1, 2), *defaults.getUpdateOpTime()); ASSERT_EQ(1234, defaults.getUpdateWallClockTime()->toMillisSinceEpoch()); @@ -288,15 +254,11 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithCWRWCNotSetThenSetWithImp _lookupMock.setLookupCallReturnValue({}); ASSERT(!isCWWCSet()); auto oldDefaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(oldDefaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(oldDefaults.getDefaultReadConcernSource()); - ASSERT(oldDefaults.getDefaultReadConcernSource() == - DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!oldDefaults.getDefaultReadConcernSource()); - } + ASSERT(oldDefaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(oldDefaults.getDefaultReadConcernSource()); + ASSERT(oldDefaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); + ASSERT(oldDefaults.getDefaultWriteConcern()); ASSERT_EQ(WriteConcernOptions::kMajority, oldDefaults.getDefaultWriteConcern().get().wMode); ASSERT(!oldDefaults.getUpdateOpTime()); @@ -321,12 +283,8 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithCWRWCNotSetThenSetWithImp auto defaults = getDefault(); ASSERT(defaults.getDefaultReadConcern()->getLevel() == repl::ReadConcernLevel::kLocalReadConcern); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); - } else { - ASSERT(!defaults.getDefaultReadConcernSource()); - } + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); ASSERT_EQ(4, defaults.getDefaultWriteConcern()->wNumNodes); ASSERT_EQ(Timestamp(1, 2), *defaults.getUpdateOpTime()); @@ -354,12 +312,9 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithSetCWRWCWithImplicitWCW1) auto defaults = getDefault(); ASSERT(defaults.getDefaultReadConcern()->getLevel() == repl::ReadConcernLevel::kLocalReadConcern); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); - } else { - ASSERT(!defaults.getDefaultReadConcernSource()); - } + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); + ASSERT_EQ(4, defaults.getDefaultWriteConcern()->wNumNodes); ASSERT_EQ(Timestamp(1, 2), *defaults.getUpdateOpTime()); ASSERT_EQ(1234, defaults.getUpdateWallClockTime()->toMillisSinceEpoch()); @@ -386,10 +341,8 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithSetCWRWCWithImplicitWCMaj auto defaults = getDefault(); ASSERT(defaults.getDefaultReadConcern()->getLevel() == repl::ReadConcernLevel::kLocalReadConcern); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); - } + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); ASSERT_EQ(4, defaults.getDefaultWriteConcern()->wNumNodes); ASSERT_EQ(Timestamp(1, 2), *defaults.getUpdateOpTime()); @@ -410,16 +363,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWriteConcernSourceImplicitWit ASSERT(!isCWWCSet()); auto defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); // The default write concern source should be set to implicit if wc.usedDefaultConstructedWC is // true @@ -446,10 +395,9 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithSetAndUnSetCWRCWithImplic auto defaults = getDefault(); ASSERT(defaults.getDefaultReadConcern()->getLevel() == repl::ReadConcernLevel::kAvailableReadConcern); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); - } + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); + ASSERT(!defaults.getDefaultWriteConcern()); ASSERT_EQ(Timestamp(1, 2), *defaults.getUpdateOpTime()); ASSERT_EQ(1234, defaults.getUpdateWallClockTime()->toMillisSinceEpoch()); @@ -466,16 +414,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithSetAndUnSetCWRCWithImplic ASSERT(!isCWWCSet()); defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); ASSERT(!defaults.getDefaultWriteConcern()); ASSERT_EQ(Timestamp(1, 3), *defaults.getUpdateOpTime()); @@ -499,10 +443,9 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithSetAndUnSetCWRCWithImplic auto defaults = getDefault(); ASSERT(defaults.getDefaultReadConcern()->getLevel() == repl::ReadConcernLevel::kLocalReadConcern); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); - } + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); + ASSERT(defaults.getDefaultWriteConcern()); ASSERT_EQ(WriteConcernOptions::kMajority, defaults.getDefaultWriteConcern().get().wMode); ASSERT_EQ(Timestamp(1, 2), *defaults.getUpdateOpTime()); @@ -520,16 +463,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithSetAndUnSetCWRCWithImplic ASSERT(!isCWWCSet()); defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); ASSERT_EQ(WriteConcernOptions::kMajority, defaults.getDefaultWriteConcern().get().wMode); ASSERT_EQ(Timestamp(1, 3), *defaults.getUpdateOpTime()); @@ -556,16 +495,13 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithoutInvalidateDoesNotCallL ASSERT(!isCWWCSet()); auto defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); + ASSERT(!defaults.getDefaultWriteConcern()); ASSERT_EQ(Timestamp(1, 2), *defaults.getUpdateOpTime()); ASSERT_EQ(1234, defaults.getUpdateWallClockTime()->toMillisSinceEpoch()); @@ -587,16 +523,13 @@ TEST_F(ReadWriteConcernDefaultsTest, TestGetDefaultWithoutInvalidateDoesNotCallL ASSERT(!isCWWCSet()); auto defaults2 = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults2.getDefaultReadConcern()); - ASSERT(defaults2.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults2.getDefaultReadConcernSource()); - ASSERT(defaults2.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults2.getDefaultReadConcern()); - ASSERT(!defaults2.getDefaultReadConcernSource()); - } + + ASSERT(defaults2.getDefaultReadConcern()); + ASSERT(defaults2.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults2.getDefaultReadConcernSource()); + ASSERT(defaults2.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); + ASSERT(!defaults2.getDefaultWriteConcern()); ASSERT_EQ(Timestamp(1, 2), *defaults2.getUpdateOpTime()); ASSERT_EQ(1234, defaults2.getUpdateWallClockTime()->toMillisSinceEpoch()); @@ -614,16 +547,13 @@ TEST_F(ReadWriteConcernDefaultsTest, TestInvalidate) { ASSERT(!isCWWCSet()); auto defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); + ASSERT(!defaults.getDefaultWriteConcern()); ASSERT_EQ(Timestamp(1, 2), *defaults.getUpdateOpTime()); ASSERT_EQ(1234, defaults.getUpdateWallClockTime()->toMillisSinceEpoch()); @@ -647,10 +577,9 @@ TEST_F(ReadWriteConcernDefaultsTest, TestInvalidate) { auto defaults2 = getDefault(); ASSERT(defaults2.getDefaultReadConcern()->getLevel() == repl::ReadConcernLevel::kAvailableReadConcern); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults2.getDefaultReadConcernSource()); - ASSERT(defaults2.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); - } + ASSERT(defaults2.getDefaultReadConcernSource()); + ASSERT(defaults2.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kGlobal); + ASSERT_EQ(4, defaults2.getDefaultWriteConcern()->wNumNodes); ASSERT_EQ(Timestamp(3, 4), *defaults2.getUpdateOpTime()); ASSERT_EQ(5678, defaults2.getUpdateWallClockTime()->toMillisSinceEpoch()); @@ -664,16 +593,12 @@ TEST_F(ReadWriteConcernDefaultsTest, TestRefreshDefaultsWithEmptyCacheAndAbsentD ASSERT(!isCWWCSet()); auto defaults = getDefault(); - if (_isDefaultRCLocalEnabled) { - ASSERT(defaults.getDefaultReadConcern()); - ASSERT(defaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(defaults.getDefaultReadConcernSource()); - ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!defaults.getDefaultReadConcern()); - ASSERT(!defaults.getDefaultReadConcernSource()); - } + + ASSERT(defaults.getDefaultReadConcern()); + ASSERT(defaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(defaults.getDefaultReadConcernSource()); + ASSERT(defaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); ASSERT(!defaults.getDefaultWriteConcern()); ASSERT(!defaults.getUpdateOpTime()); @@ -774,10 +699,8 @@ protected: ASSERT(defaults.getDefaultReadConcern()->getLevel() == repl::ReadConcernLevel::kAvailableReadConcern); - if (_isDefaultRCLocalEnabled) { - // default read concern source is not saved on disk. - ASSERT(!defaults.getDefaultReadConcernSource()); - } + // default read concern source is not saved on disk. + ASSERT(!defaults.getDefaultReadConcernSource()); ASSERT_EQ(4, defaults.getDefaultWriteConcern()->wNumNodes); ASSERT(defaults.getUpdateOpTime()); @@ -800,10 +723,6 @@ protected: ReadWriteConcernDefaults::create(getServiceContext(), _lookupMock.getFetchDefaultsFn()); return ReadWriteConcernDefaults::get(getServiceContext()); }()}; - - bool _isDefaultRCLocalEnabled{ - serverGlobalParams.featureCompatibility.isVersionInitialized() && - repl::feature_flags::gDefaultRCLocal.isEnabled(serverGlobalParams.featureCompatibility)}; }; TEST_F(ReadWriteConcernDefaultsTestWithClusterTime, @@ -1031,17 +950,11 @@ TEST_F(ReadWriteConcernDefaultsTestWithClusterTime, ASSERT(newDefaults.getDefaultWriteConcernSource() == DefaultWriteConcernSourceEnum::kGlobal); // Test that the implicit default read concern is still used after read concern is unset. - if (_isDefaultRCLocalEnabled) { - ASSERT(newDefaults.getDefaultReadConcern()); - ASSERT(newDefaults.getDefaultReadConcern()->getLevel() == - repl::ReadConcernLevel::kLocalReadConcern); - ASSERT(newDefaults.getDefaultReadConcernSource()); - ASSERT(newDefaults.getDefaultReadConcernSource() == - DefaultReadConcernSourceEnum::kImplicit); - } else { - ASSERT(!newDefaults.getDefaultReadConcern()); - ASSERT(!newDefaults.getDefaultReadConcernSource()); - } + ASSERT(newDefaults.getDefaultReadConcern()); + ASSERT(newDefaults.getDefaultReadConcern()->getLevel() == + repl::ReadConcernLevel::kLocalReadConcern); + ASSERT(newDefaults.getDefaultReadConcernSource()); + ASSERT(newDefaults.getDefaultReadConcernSource() == DefaultReadConcernSourceEnum::kImplicit); } TEST_F(ReadWriteConcernDefaultsTestWithClusterTime, diff --git a/src/mongo/db/repl/repl_server_parameters.idl b/src/mongo/db/repl/repl_server_parameters.idl index 5736f82bb34..4c9dc7d1251 100644 --- a/src/mongo/db/repl/repl_server_parameters.idl +++ b/src/mongo/db/repl/repl_server_parameters.idl @@ -544,14 +544,6 @@ feature_flags: default: true version: 5.1 - featureFlagDefaultReadConcernLocal: - description: >- - When enabled, default read concern will be set to local if there is no cluster wide - read concern (CWRC). - cpp_varname: feature_flags::gDefaultRCLocal - default: true - version: 5.0 - featureFlagFileCopyBasedInitialSync: description: >- When enabled, file copy based initial sync will be supported in Enterprise Server. diff --git a/src/mongo/db/service_entry_point_common.cpp b/src/mongo/db/service_entry_point_common.cpp index e8a4bd8ef7c..5e2bd446b35 100644 --- a/src/mongo/db/service_entry_point_common.cpp +++ b/src/mongo/db/service_entry_point_common.cpp @@ -313,12 +313,8 @@ StatusWith<repl::ReadConcernArgs> _extractReadConcern(OperationContext* opCtx, ReadWriteConcernDefaults::get(opCtx->getServiceContext()).getDefault(opCtx); const auto rcDefault = rwcDefaults.getDefaultReadConcern(); if (rcDefault) { - const bool isDefaultRCLocalFeatureFlagEnabled = - serverGlobalParams.featureCompatibility.isVersionInitialized() && - repl::feature_flags::gDefaultRCLocal.isEnabled( - serverGlobalParams.featureCompatibility); const auto readConcernSource = rwcDefaults.getDefaultReadConcernSource(); - customDefaultWasApplied = !isDefaultRCLocalFeatureFlagEnabled || + customDefaultWasApplied = (readConcernSource && readConcernSource.get() == DefaultReadConcernSourceEnum::kGlobal); |