summaryrefslogtreecommitdiff
path: root/src/mongo/db/s
diff options
context:
space:
mode:
authorPierlauro Sciarelli <pierlauro.sciarelli@mongodb.com>2022-09-09 13:40:36 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-09-09 14:10:15 +0000
commit817251d8812f1b71eeb1bed1b6fdab4064ef1a24 (patch)
tree0b3debb9defb1f415ac7d8e91003cfe9b8dc0106 /src/mongo/db/s
parentd14bc704d5e758a383093e42225e2f701aab9e4b (diff)
downloadmongo-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.cpp10
-rw-r--r--src/mongo/db/s/range_deleter_service.h5
-rw-r--r--src/mongo/db/s/range_deleter_service_test.cpp20
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};