summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Jin Kang Park <yujin.kang@mongodb.com>2022-06-21 14:30:02 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-06-21 15:22:55 +0000
commit700a1254e2fbd1f5df74d010d214503f24dbbf3a (patch)
tree40923009563309e160a634a352971409da9c3186
parent81e4d3d755ca68141c8e4c5e152c04c751dd977a (diff)
downloadmongo-700a1254e2fbd1f5df74d010d214503f24dbbf3a.tar.gz
SERVER-65796: convert activeIndexBuilds gauge metrics to indexBuilds counter metrics
-rw-r--r--src/mongo/db/index_builds_coordinator.cpp21
-rw-r--r--src/mongo/db/index_builds_coordinator.h12
-rw-r--r--src/mongo/db/index_builds_coordinator_mongod.cpp2
3 files changed, 18 insertions, 17 deletions
diff --git a/src/mongo/db/index_builds_coordinator.cpp b/src/mongo/db/index_builds_coordinator.cpp
index 196019d0d92..5b954baa536 100644
--- a/src/mongo/db/index_builds_coordinator.cpp
+++ b/src/mongo/db/index_builds_coordinator.cpp
@@ -90,8 +90,9 @@ MONGO_FAIL_POINT_DEFINE(hangBeforeBuildingIndexSecond);
MONGO_FAIL_POINT_DEFINE(hangIndexBuildBeforeWaitingUntilMajorityOpTime);
MONGO_FAIL_POINT_DEFINE(failSetUpResumeIndexBuild);
-IndexBuildsCoordinator::ActiveIndexBuildsSSS::ActiveIndexBuildsSSS()
- : ServerStatusSection("activeIndexBuilds"),
+IndexBuildsCoordinator::IndexBuildsSSS::IndexBuildsSSS()
+ : ServerStatusSection("indexBuilds"),
+ registered(0),
scanCollection(0),
drainSideWritesTable(0),
drainSideWritesTablePreCommit(0),
@@ -632,6 +633,7 @@ Status IndexBuildsCoordinator::_startIndexBuildForRecovery(OperationContext* opC
if (!status.isOK()) {
return status;
}
+ indexBuildsSSS.registered.addAndFetch(1);
IndexBuildsManager::SetupOptions options;
options.protocol = protocol;
@@ -715,6 +717,7 @@ Status IndexBuildsCoordinator::_setUpResumeIndexBuild(OperationContext* opCtx,
if (!status.isOK()) {
return status;
}
+ indexBuildsSSS.registered.addAndFetch(1);
IndexBuildsManager::SetupOptions options;
options.protocol = protocol;
@@ -1964,6 +1967,7 @@ IndexBuildsCoordinator::_filterSpecsAndRegisterBuild(OperationContext* opCtx,
if (!status.isOK()) {
return status;
}
+ indexBuildsSSS.registered.addAndFetch(1);
// The index has been registered on the Coordinator in an unstarted state. Return an
// uninitialized Future so that the caller can set up the index build by calling
@@ -2520,7 +2524,7 @@ void IndexBuildsCoordinator::_scanCollectionAndInsertSortedKeysIntoIndex(
boost::optional<RecordId> resumeAfterRecordId) {
// Collection scan and insert into index.
{
- const ScopedCounter counter{activeIndexBuildsSSS.scanCollection};
+ indexBuildsSSS.scanCollection.addAndFetch(1);
ScopeGuard scopeGuard([&] {
opCtx->recoveryUnit()->setTimestampReadSource(RecoveryUnit::ReadSource::kNoTimestamp);
@@ -2586,7 +2590,7 @@ CollectionPtr IndexBuildsCoordinator::_setUpForScanCollectionAndInsertSortedKeys
*/
void IndexBuildsCoordinator::_insertKeysFromSideTablesWithoutBlockingWrites(
OperationContext* opCtx, std::shared_ptr<ReplIndexBuildState> replState) {
- const ScopedCounter counter{activeIndexBuildsSSS.drainSideWritesTable};
+ indexBuildsSSS.drainSideWritesTable.addAndFetch(1);
// Perform the first drain while holding an intent lock.
const NamespaceStringOrUUID dbAndUUID(replState->dbName, replState->collectionUUID);
@@ -2612,7 +2616,7 @@ void IndexBuildsCoordinator::_insertKeysFromSideTablesBlockingWrites(
OperationContext* opCtx,
std::shared_ptr<ReplIndexBuildState> replState,
const IndexBuildOptions& indexBuildOptions) {
- const ScopedCounter counter{activeIndexBuildsSSS.drainSideWritesTablePreCommit};
+ indexBuildsSSS.drainSideWritesTablePreCommit.addAndFetch(1);
const NamespaceStringOrUUID dbAndUUID(replState->dbName, replState->collectionUUID);
// Perform the second drain while stopping writes on the collection.
{
@@ -2718,7 +2722,7 @@ IndexBuildsCoordinator::CommitResult IndexBuildsCoordinator::_insertKeysFromSide
<< ", collection UUID: " << replState->collectionUUID);
{
- const ScopedCounter counter{activeIndexBuildsSSS.drainSideWritesTableOnCommit};
+ indexBuildsSSS.drainSideWritesTableOnCommit.addAndFetch(1);
// Perform the third and final drain after releasing a shared lock and reacquiring an
// exclusive lock on the collection.
uassertStatusOK(_indexBuildsManager.drainBackgroundWrites(
@@ -2760,8 +2764,7 @@ IndexBuildsCoordinator::CommitResult IndexBuildsCoordinator::_insertKeysFromSide
// can be called for two-phase builds in all replication states except during initial sync
// when this node is not guaranteed to be consistent.
{
- const ScopedCounter counter{
- activeIndexBuildsSSS.processConstraintsViolatonTableOnCommit};
+ indexBuildsSSS.processConstraintsViolatonTableOnCommit.addAndFetch(1);
bool twoPhaseAndNotInitialSyncing =
IndexBuildProtocol::kTwoPhase == replState->protocol &&
!replCoord->getMemberState().startup2();
@@ -2771,7 +2774,7 @@ IndexBuildsCoordinator::CommitResult IndexBuildsCoordinator::_insertKeysFromSide
opCtx, collection.get(), replState->buildUUID));
}
}
- const ScopedCounter counter{activeIndexBuildsSSS.commit};
+ indexBuildsSSS.commit.addAndFetch(1);
// If two phase index builds is enabled, index build will be coordinated using
// startIndexBuild and commitIndexBuild oplog entries.
diff --git a/src/mongo/db/index_builds_coordinator.h b/src/mongo/db/index_builds_coordinator.h
index ee617a0742d..ac8193685ac 100644
--- a/src/mongo/db/index_builds_coordinator.h
+++ b/src/mongo/db/index_builds_coordinator.h
@@ -489,9 +489,9 @@ public:
*/
static int getNumIndexesTotal(OperationContext* opCtx, const CollectionPtr& collection);
- class ActiveIndexBuildsSSS : public ServerStatusSection {
+ class IndexBuildsSSS : public ServerStatusSection {
public:
- ActiveIndexBuildsSSS();
+ IndexBuildsSSS();
bool includeByDefault() const final {
return true;
@@ -504,10 +504,7 @@ public:
BSONObjBuilder indexBuilds;
BSONObjBuilder phases;
- indexBuilds.append(
- "total",
- static_cast<int>(
- IndexBuildsCoordinator::get(opCtx)->activeIndexBuilds.getActiveIndexBuilds()));
+ indexBuilds.append("total", registered.loadRelaxed());
phases.append("scanCollection", scanCollection.loadRelaxed());
phases.append("drainSideWritesTable", drainSideWritesTable.loadRelaxed());
@@ -525,6 +522,7 @@ public:
return indexBuilds.obj();
}
+ AtomicWord<int> registered;
AtomicWord<int> scanCollection;
AtomicWord<int> drainSideWritesTable;
AtomicWord<int> drainSideWritesTablePreCommit;
@@ -532,7 +530,7 @@ public:
AtomicWord<int> drainSideWritesTableOnCommit;
AtomicWord<int> processConstraintsViolatonTableOnCommit;
AtomicWord<int> commit;
- } activeIndexBuildsSSS;
+ } indexBuildsSSS;
private:
/**
diff --git a/src/mongo/db/index_builds_coordinator_mongod.cpp b/src/mongo/db/index_builds_coordinator_mongod.cpp
index fb309720f22..0aa1661bed2 100644
--- a/src/mongo/db/index_builds_coordinator_mongod.cpp
+++ b/src/mongo/db/index_builds_coordinator_mongod.cpp
@@ -709,7 +709,7 @@ void IndexBuildsCoordinatorMongod::_waitForNextIndexBuildActionAndCommit(
<< replState->buildUUID);
auto const nextAction = [&] {
- const ScopedCounter counter{activeIndexBuildsSSS.waitForCommitQuorum};
+ indexBuildsSSS.waitForCommitQuorum.addAndFetch(1);
// Future wait can be interrupted.
return _drainSideWritesUntilNextActionIsAvailable(opCtx, replState);
}();