diff options
author | Waley Chen <waleycz@gmail.com> | 2016-11-01 16:01:07 -0400 |
---|---|---|
committer | Waley Chen <waleycz@gmail.com> | 2016-11-01 16:01:07 -0400 |
commit | b1764ce64215d5c9c0b3482aa251f8e900512b12 (patch) | |
tree | cb0dbaff4208d8b070cd99d36cf7b44321b76470 /src/mongo/client/connpool.cpp | |
parent | 93e2a1fa638fc6ee7ce40d825a776a1806a4a53c (diff) | |
download | mongo-b1764ce64215d5c9c0b3482aa251f8e900512b12.tar.gz |
SERVER-26846 scoped_db_conn_test.exe - DontReturnConnGoneBadToPool: expected notReusedConns == globalConnPool.getNumBadConns
Diffstat (limited to 'src/mongo/client/connpool.cpp')
-rw-r--r-- | src/mongo/client/connpool.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/mongo/client/connpool.cpp b/src/mongo/client/connpool.cpp index e7a5a884275..17d68626b9c 100644 --- a/src/mongo/client/connpool.cpp +++ b/src/mongo/client/connpool.cpp @@ -76,13 +76,16 @@ void PoolForHost::done(DBConnectionPool* pool, DBClientBase* c) { // Remember that this host had a broken connection for later if (isFailed) { - _badConns++; reportBadConnectionAt(c->getSockCreationMicroSec()); } - if (isFailed || - // Another (later) connection was reported as broken to this host - (c->getSockCreationMicroSec() < _minValidCreationTimeMicroSec) || + // Another (later) connection was reported as broken to this host + bool isBroken = c->getSockCreationMicroSec() < _minValidCreationTimeMicroSec; + if (isFailed || isBroken) { + _badConns++; + } + + if (isFailed || isBroken || // We have a pool size that we need to enforce (_maxPoolSize >= 0 && static_cast<int>(_pool.size()) >= _maxPoolSize)) { pool->onDestroy(c); @@ -266,6 +269,12 @@ DBClientBase* DBConnectionPool::get(const string& host, double socketTimeout) { return _finishCreate(host, socketTimeout, c); } +int DBConnectionPool::getNumAvailableConns(const string& host, double socketTimeout) const { + stdx::lock_guard<stdx::mutex> L(_mutex); + auto it = _pools.find(PoolKey(host, socketTimeout)); + return (it == _pools.end()) ? 0 : it->second.numAvailable(); +} + int DBConnectionPool::getNumBadConns(const string& host, double socketTimeout) const { stdx::lock_guard<stdx::mutex> L(_mutex); auto it = _pools.find(PoolKey(host, socketTimeout)); |