summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline
diff options
context:
space:
mode:
authorSpencer T Brody <spencer@mongodb.com>2020-09-15 14:49:14 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-09-23 01:31:52 +0000
commit11fc0e29ef3b2165995679e98b0f9f4d61c6fe47 (patch)
tree0642ba152489ddd4870d3044cc1849318c171cd6 /src/mongo/db/pipeline
parent3d6a6a1dce2a4c3bb802d7f004b106f36ccd283b (diff)
downloadmongo-11fc0e29ef3b2165995679e98b0f9f4d61c6fe47.tar.gz
SERVER-49243 Add framework for PrimaryOnlyServices to report their Instances in currentOp()
Diffstat (limited to 'src/mongo/db/pipeline')
-rw-r--r--src/mongo/db/pipeline/process_interface/SConscript1
-rw-r--r--src/mongo/db/pipeline/process_interface/common_mongod_process_interface.cpp12
-rw-r--r--src/mongo/db/pipeline/process_interface/common_mongod_process_interface.h5
-rw-r--r--src/mongo/db/pipeline/process_interface/common_process_interface.cpp2
-rw-r--r--src/mongo/db/pipeline/process_interface/common_process_interface.h8
-rw-r--r--src/mongo/db/pipeline/process_interface/mongos_process_interface.cpp6
-rw-r--r--src/mongo/db/pipeline/process_interface/mongos_process_interface.h5
7 files changed, 39 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/process_interface/SConscript b/src/mongo/db/pipeline/process_interface/SConscript
index 2c1e4404ce8..7c09da5f6ef 100644
--- a/src/mongo/db/pipeline/process_interface/SConscript
+++ b/src/mongo/db/pipeline/process_interface/SConscript
@@ -48,6 +48,7 @@ env.Library(
'$BUILD_DIR/mongo/db/catalog/database_holder',
'$BUILD_DIR/mongo/db/concurrency/flow_control_ticketholder',
'$BUILD_DIR/mongo/db/index_builds_coordinator_mongod',
+ '$BUILD_DIR/mongo/db/repl/primary_only_service',
'$BUILD_DIR/mongo/db/session_catalog',
'$BUILD_DIR/mongo/db/storage/backup_cursor_hooks',
'$BUILD_DIR/mongo/scripting/scripting_common',
diff --git a/src/mongo/db/pipeline/process_interface/common_mongod_process_interface.cpp b/src/mongo/db/pipeline/process_interface/common_mongod_process_interface.cpp
index 222b1252e33..35a3c11acad 100644
--- a/src/mongo/db/pipeline/process_interface/common_mongod_process_interface.cpp
+++ b/src/mongo/db/pipeline/process_interface/common_mongod_process_interface.cpp
@@ -54,6 +54,7 @@
#include "mongo/db/pipeline/pipeline_d.h"
#include "mongo/db/query/collection_index_usage_tracker_decoration.h"
#include "mongo/db/query/collection_query_info.h"
+#include "mongo/db/repl/primary_only_service.h"
#include "mongo/db/repl/speculative_majority_read_info.h"
#include "mongo/db/s/collection_sharding_state.h"
#include "mongo/db/s/sharding_state.h"
@@ -492,6 +493,17 @@ void CommonMongodProcessInterface::_reportCurrentOpsForTransactionCoordinators(
reportCurrentOpsForTransactionCoordinators(opCtx, includeIdle, ops);
}
+void CommonMongodProcessInterface::_reportCurrentOpsForPrimaryOnlyServices(
+ OperationContext* opCtx,
+ CurrentOpConnectionsMode connMode,
+ CurrentOpSessionsMode sessionMode,
+ std::vector<BSONObj>* ops) const {
+ auto registry = repl::PrimaryOnlyServiceRegistry::get(opCtx->getServiceContext());
+ invariant(registry);
+
+ registry->reportServiceInfoForCurrentOp(connMode, sessionMode, ops);
+}
+
void CommonMongodProcessInterface::_reportCurrentOpsForIdleSessions(
OperationContext* opCtx, CurrentOpUserMode userMode, std::vector<BSONObj>* ops) const {
auto sessionCatalog = SessionCatalog::get(opCtx);
diff --git a/src/mongo/db/pipeline/process_interface/common_mongod_process_interface.h b/src/mongo/db/pipeline/process_interface/common_mongod_process_interface.h
index f350673b106..e7ff31ee853 100644
--- a/src/mongo/db/pipeline/process_interface/common_mongod_process_interface.h
+++ b/src/mongo/db/pipeline/process_interface/common_mongod_process_interface.h
@@ -142,6 +142,11 @@ protected:
bool includeIdle,
std::vector<BSONObj>* ops) const final;
+ void _reportCurrentOpsForPrimaryOnlyServices(OperationContext* opCtx,
+ CurrentOpConnectionsMode connMode,
+ CurrentOpSessionsMode sessionMode,
+ std::vector<BSONObj>* ops) const final;
+
/**
* Converts a renameCollection command into an internalRenameIfOptionsAndIndexesMatch command.
*/
diff --git a/src/mongo/db/pipeline/process_interface/common_process_interface.cpp b/src/mongo/db/pipeline/process_interface/common_process_interface.cpp
index b6b304c348b..7cb66e7f61a 100644
--- a/src/mongo/db/pipeline/process_interface/common_process_interface.cpp
+++ b/src/mongo/db/pipeline/process_interface/common_process_interface.cpp
@@ -131,6 +131,8 @@ std::vector<BSONObj> CommonProcessInterface::getCurrentOps(
userMode == CurrentOpUserMode::kIncludeAll) {
_reportCurrentOpsForTransactionCoordinators(
opCtx, sessionMode == MongoProcessInterface::CurrentOpSessionsMode::kIncludeIdle, &ops);
+
+ _reportCurrentOpsForPrimaryOnlyServices(opCtx, connMode, sessionMode, &ops);
}
return ops;
diff --git a/src/mongo/db/pipeline/process_interface/common_process_interface.h b/src/mongo/db/pipeline/process_interface/common_process_interface.h
index e3d68b5bdf7..513edd5a6f4 100644
--- a/src/mongo/db/pipeline/process_interface/common_process_interface.h
+++ b/src/mongo/db/pipeline/process_interface/common_process_interface.h
@@ -106,6 +106,14 @@ protected:
virtual void _reportCurrentOpsForTransactionCoordinators(OperationContext* opCtx,
bool includeIdle,
std::vector<BSONObj>* ops) const = 0;
+
+ /**
+ * Reports information about PrimaryOnlyServices.
+ */
+ virtual void _reportCurrentOpsForPrimaryOnlyServices(OperationContext* opCtx,
+ CurrentOpConnectionsMode connMode,
+ CurrentOpSessionsMode sessionMode,
+ std::vector<BSONObj>* ops) const = 0;
};
} // namespace mongo
diff --git a/src/mongo/db/pipeline/process_interface/mongos_process_interface.cpp b/src/mongo/db/pipeline/process_interface/mongos_process_interface.cpp
index 92b87ccb5fc..21823edf19d 100644
--- a/src/mongo/db/pipeline/process_interface/mongos_process_interface.cpp
+++ b/src/mongo/db/pipeline/process_interface/mongos_process_interface.cpp
@@ -268,6 +268,12 @@ void MongosProcessInterface::_reportCurrentOpsForIdleSessions(OperationContext*
void MongosProcessInterface::_reportCurrentOpsForTransactionCoordinators(
OperationContext* opCtx, bool includeIdle, std::vector<BSONObj>* ops) const {};
+void MongosProcessInterface::_reportCurrentOpsForPrimaryOnlyServices(
+ OperationContext* opCtx,
+ CurrentOpConnectionsMode connMode,
+ CurrentOpSessionsMode sessionMode,
+ std::vector<BSONObj>* ops) const {};
+
std::vector<GenericCursor> MongosProcessInterface::getIdleCursors(
const boost::intrusive_ptr<ExpressionContext>& expCtx, CurrentOpUserMode userMode) const {
invariant(hasGlobalServiceContext());
diff --git a/src/mongo/db/pipeline/process_interface/mongos_process_interface.h b/src/mongo/db/pipeline/process_interface/mongos_process_interface.h
index 82444c67137..6439d6e54fe 100644
--- a/src/mongo/db/pipeline/process_interface/mongos_process_interface.h
+++ b/src/mongo/db/pipeline/process_interface/mongos_process_interface.h
@@ -249,6 +249,11 @@ protected:
void _reportCurrentOpsForTransactionCoordinators(OperationContext* opCtx,
bool includeIdle,
std::vector<BSONObj>* ops) const final;
+
+ void _reportCurrentOpsForPrimaryOnlyServices(OperationContext* opCtx,
+ CurrentOpConnectionsMode connMode,
+ CurrentOpSessionsMode sessionMode,
+ std::vector<BSONObj>* ops) const final;
};
} // namespace mongo