diff options
author | Spencer T Brody <spencer@mongodb.com> | 2020-09-15 14:49:14 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-09-23 01:31:52 +0000 |
commit | 11fc0e29ef3b2165995679e98b0f9f4d61c6fe47 (patch) | |
tree | 0642ba152489ddd4870d3044cc1849318c171cd6 /src/mongo/db/pipeline | |
parent | 3d6a6a1dce2a4c3bb802d7f004b106f36ccd283b (diff) | |
download | mongo-11fc0e29ef3b2165995679e98b0f9f4d61c6fe47.tar.gz |
SERVER-49243 Add framework for PrimaryOnlyServices to report their Instances in currentOp()
Diffstat (limited to 'src/mongo/db/pipeline')
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 |