diff options
author | Allison Easton <allison.easton@mongodb.com> | 2022-06-02 13:07:17 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-10-14 13:34:32 +0000 |
commit | 9f9fd512dd725cdf9bc24baeba77b9123724e95f (patch) | |
tree | abea86bf0e37b031d4661932874bcdecc90e69c3 /src | |
parent | 6d75a1d04f476d76b70c80bdd179feaa79ff20dd (diff) | |
download | mongo-9f9fd512dd725cdf9bc24baeba77b9123724e95f.tar.gz |
SERVER-57417 Enable NoMoreAutoSplitter Feature flag
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/s/balancer/balancer_defragmentation_policy_test.cpp | 38 | ||||
-rw-r--r-- | src/mongo/s/sharding_feature_flags.idl | 3 |
2 files changed, 40 insertions, 1 deletions
diff --git a/src/mongo/db/s/balancer/balancer_defragmentation_policy_test.cpp b/src/mongo/db/s/balancer/balancer_defragmentation_policy_test.cpp index e26d4b9d26f..88bda45c70c 100644 --- a/src/mongo/db/s/balancer/balancer_defragmentation_policy_test.cpp +++ b/src/mongo/db/s/balancer/balancer_defragmentation_policy_test.cpp @@ -32,6 +32,7 @@ #include "mongo/db/s/balancer/balancer_random.h" #include "mongo/db/s/balancer/cluster_statistics_mock.h" #include "mongo/db/s/config/config_server_test_fixture.h" +#include "mongo/idl/server_parameter_test_util.h" namespace mongo { namespace { @@ -321,7 +322,26 @@ TEST_F(BalancerDefragmentationPolicyTest, TestRemoveCollectionEndsDefragmentatio ASSERT_FALSE(_defragmentationPolicy.isDefragmentingCollection(coll.getUuid())); } +TEST_F(BalancerDefragmentationPolicyTest, TestPhaseOneUserCancellationFinishesDefragmentation) { + auto coll = setupCollectionWithPhase({makeConfigChunkEntry()}); + _defragmentationPolicy.startCollectionDefragmentation(operationContext(), coll); + + // Collection should be in phase 1 + verifyExpectedDefragmentationPhaseOndisk(DefragmentationPhaseEnum::kMergeAndMeasureChunks); + + // User cancellation of defragmentation + _defragmentationPolicy.abortCollectionDefragmentation(operationContext(), kNss); + + // Defragmentation should complete since the NoMoreAutoSplitter feature flag is enabled + auto nextAction = _defragmentationPolicy.getNextStreamingAction(operationContext()); + ASSERT_TRUE(nextAction == boost::none); + ASSERT_FALSE(_defragmentationPolicy.isDefragmentingCollection(coll.getUuid())); + verifyExpectedDefragmentationPhaseOndisk(boost::none); +} + TEST_F(BalancerDefragmentationPolicyTest, TestPhaseOneUserCancellationBeginsPhase3) { + RAIIServerParameterControllerForTest featureFlagNoMoreAutoSplitterOff{ + "featureFlagNoMoreAutoSplitter", false}; auto coll = setupCollectionWithPhase({makeConfigChunkEntry()}); _defragmentationPolicy.startCollectionDefragmentation(operationContext(), coll); @@ -728,6 +748,8 @@ TEST_F(BalancerDefragmentationPolicyTest, */ TEST_F(BalancerDefragmentationPolicyTest, DefragmentationBeginsWithPhase3FromPersistedSetting) { + RAIIServerParameterControllerForTest featureFlagNoMoreAutoSplitterOff{ + "featureFlagNoMoreAutoSplitter", false}; auto coll = setupCollectionWithPhase({makeConfigChunkEntry(kPhase3DefaultChunkSize)}, DefragmentationPhaseEnum::kSplitChunks); // Defragmentation does not start until startCollectionDefragmentation is called @@ -742,6 +764,8 @@ TEST_F(BalancerDefragmentationPolicyTest, DefragmentationBeginsWithPhase3FromPer } TEST_F(BalancerDefragmentationPolicyTest, SingleLargeChunkCausesAutoSplitAndSplitActions) { + RAIIServerParameterControllerForTest featureFlagNoMoreAutoSplitterOff{ + "featureFlagNoMoreAutoSplitter", false}; auto coll = setupCollectionWithPhase({makeConfigChunkEntry(kPhase3DefaultChunkSize)}, DefragmentationPhaseEnum::kSplitChunks); auto nextAction = _defragmentationPolicy.getNextStreamingAction(operationContext()); @@ -759,6 +783,8 @@ TEST_F(BalancerDefragmentationPolicyTest, SingleLargeChunkCausesAutoSplitAndSpli } TEST_F(BalancerDefragmentationPolicyTest, CollectionMaxChunkSizeIsUsedForPhase3) { + RAIIServerParameterControllerForTest featureFlagNoMoreAutoSplitterOff{ + "featureFlagNoMoreAutoSplitter", false}; // One chunk > 1KB should trigger AutoSplitVector auto coll = setupCollectionWithPhase( {makeConfigChunkEntry(2 * 1024)}, DefragmentationPhaseEnum::kSplitChunks, 1024); @@ -777,6 +803,8 @@ TEST_F(BalancerDefragmentationPolicyTest, CollectionMaxChunkSizeIsUsedForPhase3) } TEST_F(BalancerDefragmentationPolicyTest, TestRetryableFailedAutoSplitActionGetsReissued) { + RAIIServerParameterControllerForTest featureFlagNoMoreAutoSplitterOff{ + "featureFlagNoMoreAutoSplitter", false}; auto coll = setupCollectionWithPhase({makeConfigChunkEntry(kPhase3DefaultChunkSize)}, DefragmentationPhaseEnum::kSplitChunks); _defragmentationPolicy.startCollectionDefragmentation(operationContext(), coll); @@ -805,6 +833,8 @@ TEST_F(BalancerDefragmentationPolicyTest, TestRetryableFailedAutoSplitActionGets TEST_F(BalancerDefragmentationPolicyTest, TestAcknowledgeAutoSplitActionTriggersSplitOnResultingRange) { + RAIIServerParameterControllerForTest featureFlagNoMoreAutoSplitterOff{ + "featureFlagNoMoreAutoSplitter", false}; auto coll = setupCollectionWithPhase({makeConfigChunkEntry(kPhase3DefaultChunkSize)}, DefragmentationPhaseEnum::kSplitChunks); _defragmentationPolicy.startCollectionDefragmentation(operationContext(), coll); @@ -833,6 +863,8 @@ TEST_F(BalancerDefragmentationPolicyTest, } TEST_F(BalancerDefragmentationPolicyTest, TestAutoSplitWithNoSplitPointsDoesNotTriggerSplit) { + RAIIServerParameterControllerForTest featureFlagNoMoreAutoSplitterOff{ + "featureFlagNoMoreAutoSplitter", false}; auto coll = setupCollectionWithPhase({makeConfigChunkEntry(kPhase3DefaultChunkSize)}, DefragmentationPhaseEnum::kSplitChunks); _defragmentationPolicy.startCollectionDefragmentation(operationContext(), coll); @@ -850,6 +882,8 @@ TEST_F(BalancerDefragmentationPolicyTest, TestAutoSplitWithNoSplitPointsDoesNotT } TEST_F(BalancerDefragmentationPolicyTest, TestMoreThan16MBSplitPointsTriggersSplitAndAutoSplit) { + RAIIServerParameterControllerForTest featureFlagNoMoreAutoSplitterOff{ + "featureFlagNoMoreAutoSplitter", false}; auto coll = setupCollectionWithPhase({makeConfigChunkEntry(kPhase3DefaultChunkSize)}, DefragmentationPhaseEnum::kSplitChunks); _defragmentationPolicy.startCollectionDefragmentation(operationContext(), coll); @@ -880,6 +914,8 @@ TEST_F(BalancerDefragmentationPolicyTest, TestMoreThan16MBSplitPointsTriggersSpl } TEST_F(BalancerDefragmentationPolicyTest, TestFailedSplitChunkActionGetsReissued) { + RAIIServerParameterControllerForTest featureFlagNoMoreAutoSplitterOff{ + "featureFlagNoMoreAutoSplitter", false}; auto coll = setupCollectionWithPhase({makeConfigChunkEntry(kPhase3DefaultChunkSize)}, DefragmentationPhaseEnum::kSplitChunks); _defragmentationPolicy.startCollectionDefragmentation(operationContext(), coll); @@ -914,6 +950,8 @@ TEST_F(BalancerDefragmentationPolicyTest, TestFailedSplitChunkActionGetsReissued TEST_F(BalancerDefragmentationPolicyTest, TestAcknowledgeLastSuccessfulSplitActionEndsDefragmentation) { + RAIIServerParameterControllerForTest featureFlagNoMoreAutoSplitterOff{ + "featureFlagNoMoreAutoSplitter", false}; auto coll = setupCollectionWithPhase({makeConfigChunkEntry(kPhase3DefaultChunkSize)}, DefragmentationPhaseEnum::kSplitChunks); _defragmentationPolicy.startCollectionDefragmentation(operationContext(), coll); diff --git a/src/mongo/s/sharding_feature_flags.idl b/src/mongo/s/sharding_feature_flags.idl index f5149e4239c..c1cb9d86f02 100644 --- a/src/mongo/s/sharding_feature_flags.idl +++ b/src/mongo/s/sharding_feature_flags.idl @@ -35,7 +35,8 @@ feature_flags: featureFlagNoMoreAutoSplitter: description: "Guarding code for the no more auto-splitter project" cpp_varname: feature_flags::gNoMoreAutoSplitter - default: false + default: true + version: 6.1 featureFlagBalanceAccordingToDataSize: description: Balancer taking decisions based on the data size if enabled, based on number of chunks if disabled cpp_varname: feature_flags::gBalanceAccordingToDataSize |