diff options
author | Pierlauro Sciarelli <pierlauro.sciarelli@mongodb.com> | 2022-09-09 13:40:36 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-09-09 14:10:15 +0000 |
commit | 817251d8812f1b71eeb1bed1b6fdab4064ef1a24 (patch) | |
tree | 0b3debb9defb1f415ac7d8e91003cfe9b8dc0106 /src/mongo/db/s | |
parent | d14bc704d5e758a383093e42225e2f701aab9e4b (diff) | |
download | mongo-817251d8812f1b71eeb1bed1b6fdab4064ef1a24.tar.gz |
SERVER-69553 Add a way to retrieve the total number tasks registered on the range deleter service
Diffstat (limited to 'src/mongo/db/s')
-rw-r--r-- | src/mongo/db/s/range_deleter_service.cpp | 10 | ||||
-rw-r--r-- | src/mongo/db/s/range_deleter_service.h | 5 | ||||
-rw-r--r-- | src/mongo/db/s/range_deleter_service_test.cpp | 20 |
3 files changed, 35 insertions, 0 deletions
diff --git a/src/mongo/db/s/range_deleter_service.cpp b/src/mongo/db/s/range_deleter_service.cpp index 80c25e6de85..5c111641345 100644 --- a/src/mongo/db/s/range_deleter_service.cpp +++ b/src/mongo/db/s/range_deleter_service.cpp @@ -204,6 +204,16 @@ BSONObj RangeDeleterService::dumpState() { return builder.obj(); } +long long RangeDeleterService::totalNumOfRegisteredTasks() { + auto lock = _acquireMutexUnconditionally(); + + long long counter = 0; + for (const auto& [collUUID, ranges] : _rangeDeletionTasks) { + counter += ranges.size(); + } + return counter; +} + SharedSemiFuture<void> RangeDeleterService::registerTask( const RangeDeletionTask& rdt, SemiFuture<void>&& waitForActiveQueriesToComplete, diff --git a/src/mongo/db/s/range_deleter_service.h b/src/mongo/db/s/range_deleter_service.h index 33144c3f190..a946865739c 100644 --- a/src/mongo/db/s/range_deleter_service.h +++ b/src/mongo/db/s/range_deleter_service.h @@ -152,6 +152,11 @@ public: */ BSONObj dumpState(); + /* + * Returns the total number of range deletion tasks registered on the service. + */ + long long totalNumOfRegisteredTasks(); + private: /* Asynchronously register range deletions on the service. To be called on on step-up */ void _recoverRangeDeletionsOnStepUp(OperationContext* opCtx); diff --git a/src/mongo/db/s/range_deleter_service_test.cpp b/src/mongo/db/s/range_deleter_service_test.cpp index 414f8b284d3..a6ba43ac540 100644 --- a/src/mongo/db/s/range_deleter_service_test.cpp +++ b/src/mongo/db/s/range_deleter_service_test.cpp @@ -536,6 +536,26 @@ TEST_F(RangeDeleterServiceTest, DumpState) { << "Expected " << state << " == " << expectedState; } +TEST_F(RangeDeleterServiceTest, TotalNumOfRegisteredTasks) { + auto rds = RangeDeleterService::get(opCtx); + auto task0WithOngoingQueriesCollA = rangeDeletionTask0ForCollA; + auto task1WithOngoingQueriesCollA = rangeDeletionTask1ForCollA; + auto taskWithOngoingQueriesCollB = rangeDeletionTask0ForCollB; + + // Register 2 tasks for `collA` and 1 task for `collB` + auto completionFuture0CollA = + rds->registerTask(rangeDeletionTask0ForCollA->getTask(), + rangeDeletionTask0ForCollA->getOngoingQueriesFuture()); + auto completionFuture1CollA = + rds->registerTask(rangeDeletionTask1ForCollA->getTask(), + rangeDeletionTask1ForCollA->getOngoingQueriesFuture()); + auto completionFutureCollB = + rds->registerTask(rangeDeletionTask0ForCollB->getTask(), + rangeDeletionTask0ForCollB->getOngoingQueriesFuture()); + + ASSERT_EQ(3, rds->totalNumOfRegisteredTasks()); +} + TEST_F(RangeDeleterServiceTest, RegisterTaskWithDisableResumableRangeDeleterFlagEnabled) { RAIIServerParameterControllerForTest enableFeatureFlag{"disableResumableRangeDeleter", true}; |