diff options
author | samantharitter <samantha.ritter@10gen.com> | 2015-11-20 18:31:32 -0500 |
---|---|---|
committer | Ramon Fernandez <ramon@mongodb.com> | 2016-01-29 13:28:56 -0500 |
commit | c96e8cacf35cf327ba7061cc1aaba997a566a300 (patch) | |
tree | 1d38dde27cc38df2d822edf114df4153933fe7ae /src/mongo/db/commands | |
parent | 5ca8d6e28255e9519db61d5d25807d70a3000ba7 (diff) | |
download | mongo-c96e8cacf35cf327ba7061cc1aaba997a566a300.tar.gz |
SERVER-21597 Fix connPoolStats to work with many NetworkInterfaces
(cherry picked from commit 7c67e25f37853c60c106d2cf08eca1b81c4133ae)
Diffstat (limited to 'src/mongo/db/commands')
-rw-r--r-- | src/mongo/db/commands/conn_pool_stats.cpp | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/mongo/db/commands/conn_pool_stats.cpp b/src/mongo/db/commands/conn_pool_stats.cpp index a8e5af9bd64..39d27c1200e 100644 --- a/src/mongo/db/commands/conn_pool_stats.cpp +++ b/src/mongo/db/commands/conn_pool_stats.cpp @@ -37,6 +37,7 @@ #include "mongo/db/commands.h" #include "mongo/db/repl/replication_coordinator.h" #include "mongo/db/repl/replication_coordinator_global.h" +#include "mongo/executor/connection_pool_stats.h" #include "mongo/executor/network_interface_factory.h" #include "mongo/s/client/shard_registry.h" #include "mongo/s/grid.h" @@ -69,32 +70,29 @@ public: int, std::string&, mongo::BSONObjBuilder& result) override { - BSONObjBuilder poolStats(result.subobjStart("pools")); + executor::ConnectionPoolStats stats{}; - // Global connection pool - BSONObjBuilder globalStats(poolStats.subobjStart("DBClient (Global)")); - globalConnPool.appendInfo(globalStats); - globalStats.append("numClientConnection", DBClientConnection::getNumConnections()); - globalStats.append("numAScopedConnection", AScopedConnection::getNumConnections()); - globalStats.doneFast(); + // Global connection pool connections. + globalConnPool.appendConnectionStats(&stats); + result.appendNumber("numClientConnections", DBClientConnection::getNumConnections()); + result.appendNumber("numAScopedConnections", AScopedConnection::getNumConnections()); - // Replication ASIO, if we have one + // Replication connections, if we have them. auto replCoord = repl::ReplicationCoordinator::get(txn); if (replCoord && replCoord->isReplEnabled()) { - BSONObjBuilder replStats(poolStats.subobjStart("NetworkInterfaceASIO (Replication)")); - replCoord->appendConnectionStats(&replStats); + replCoord->appendConnectionStats(&stats); } - // Sharding ASIO, if we have one + // Sharding connections, if we have any. auto registry = grid.shardRegistry(); if (registry) { - BSONObjBuilder shardStats(poolStats.subobjStart("NetworkInterfaceASIO (Sharding)")); - registry->getExecutor()->appendConnectionStats(&shardStats); + registry->appendConnectionStats(&stats); } - poolStats.doneFast(); + // Output to a BSON object. + stats.appendToBSON(result); - // Always report all replica sets being tracked + // Always report all replica sets being tracked. BSONObjBuilder setStats(result.subobjStart("replicaSets")); globalRSMonitorManager.report(&setStats); setStats.doneFast(); |