mirror of
https://github.com/pocoproject/poco.git
synced 2025-03-03 12:58:03 +01:00
Poco::Data::SessionPool change connection timeout #3241
This commit is contained in:
parent
24b99e7762
commit
34c4d7c4a2
@ -71,7 +71,8 @@ public:
|
||||
const std::string& connectionString,
|
||||
int minSessions = 1,
|
||||
int maxSessions = 32,
|
||||
int idleTime = 60);
|
||||
int idleTime = 60,
|
||||
int connTimeout = 60);
|
||||
/// Creates the SessionPool for sessions with the given connector
|
||||
/// and connectionString.
|
||||
///
|
||||
@ -123,6 +124,9 @@ public:
|
||||
int idle() const;
|
||||
/// Returns the number of idle sessions.
|
||||
|
||||
int connTimeout() const;
|
||||
/// Returns the connection timeout.
|
||||
|
||||
int dead();
|
||||
/// Returns the number of not connected active sessions.
|
||||
|
||||
@ -192,6 +196,7 @@ private:
|
||||
int _minSessions;
|
||||
int _maxSessions;
|
||||
int _idleTime;
|
||||
int _connTimeout;
|
||||
int _nSessions;
|
||||
SessionList _idleSessions;
|
||||
SessionList _activeSessions;
|
||||
|
@ -22,12 +22,13 @@ namespace Poco {
|
||||
namespace Data {
|
||||
|
||||
|
||||
SessionPool::SessionPool(const std::string& connector, const std::string& connectionString, int minSessions, int maxSessions, int idleTime):
|
||||
SessionPool::SessionPool(const std::string& connector, const std::string& connectionString, int minSessions, int maxSessions, int idleTime, int connTimeout):
|
||||
_connector(connector),
|
||||
_connectionString(connectionString),
|
||||
_minSessions(minSessions),
|
||||
_maxSessions(maxSessions),
|
||||
_idleTime(idleTime),
|
||||
_connTimeout(connTimeout),
|
||||
_nSessions(0),
|
||||
_janitorTimer(1000*idleTime, 1000*idleTime/4),
|
||||
_shutdown(false)
|
||||
@ -72,7 +73,7 @@ Session SessionPool::get()
|
||||
{
|
||||
if (_nSessions < _maxSessions)
|
||||
{
|
||||
Session newSession(SessionFactory::instance().create(_connector, _connectionString));
|
||||
Session newSession(SessionFactory::instance().create(_connector, _connectionString, static_cast<std::size_t>(_connTimeout)));
|
||||
applySettings(newSession.impl());
|
||||
customizeSession(newSession);
|
||||
|
||||
@ -130,6 +131,12 @@ int SessionPool::idle() const
|
||||
}
|
||||
|
||||
|
||||
int SessionPool::connTimeout() const
|
||||
{
|
||||
return _connTimeout;
|
||||
}
|
||||
|
||||
|
||||
int SessionPool::dead()
|
||||
{
|
||||
Poco::Mutex::ScopedLock lock(_mutex);
|
||||
|
@ -522,7 +522,7 @@ void DataTest::testColumnVector()
|
||||
|
||||
try
|
||||
{
|
||||
int i; i = c[100]; // to silence gcc
|
||||
POCO_UNUSED int i; i = c[100];
|
||||
fail ("must fail");
|
||||
}
|
||||
catch (RangeException&) { }
|
||||
@ -625,7 +625,7 @@ void DataTest::testColumnVectorBool()
|
||||
|
||||
try
|
||||
{
|
||||
bool b; b = c[100]; // to silence gcc
|
||||
POCO_UNUSED bool b; b = c[100];
|
||||
fail ("must fail");
|
||||
}
|
||||
catch (RangeException&) { }
|
||||
@ -701,7 +701,7 @@ void DataTest::testColumnDeque()
|
||||
|
||||
try
|
||||
{
|
||||
int i; i = c[100]; // to silence gcc
|
||||
POCO_UNUSED int i; i = c[100];
|
||||
fail ("must fail");
|
||||
}
|
||||
catch (RangeException&) { }
|
||||
@ -818,7 +818,7 @@ void DataTest::testColumnList()
|
||||
|
||||
try
|
||||
{
|
||||
int i; i = c[100]; // to silence gcc
|
||||
POCO_UNUSED int i; i = c[100];
|
||||
fail ("must fail");
|
||||
}
|
||||
catch (RangeException&) { }
|
||||
@ -925,13 +925,13 @@ void DataTest::testRow()
|
||||
|
||||
try
|
||||
{
|
||||
int i; i = row[5].convert<int>(); // to silence gcc
|
||||
POCO_UNUSED int i; i = row[5].convert<int>();
|
||||
fail ("must fail");
|
||||
}catch (RangeException&) {}
|
||||
|
||||
try
|
||||
{
|
||||
int i; i = row["a bad name"].convert<int>(); // to silence gcc
|
||||
POCO_UNUSED int i; i = row["a bad name"].convert<int>();
|
||||
fail ("must fail");
|
||||
}catch (NotFoundException&) {}
|
||||
|
||||
|
@ -46,7 +46,7 @@ SessionPoolTest::~SessionPoolTest()
|
||||
|
||||
void SessionPoolTest::testSessionPool()
|
||||
{
|
||||
SessionPool pool("test", "cs", 1, 4, 2);
|
||||
SessionPool pool("test", "cs", 1, 4, 2, 10);
|
||||
|
||||
pool.setFeature("f1", true);
|
||||
assertTrue (pool.getFeature("f1"));
|
||||
@ -61,6 +61,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 0);
|
||||
assertTrue (pool.idle() == 0);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 4);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -78,6 +79,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 1);
|
||||
assertTrue (pool.idle() == 0);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 3);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -89,6 +91,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 2);
|
||||
assertTrue (pool.idle() == 0);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 2);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -101,6 +104,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 3);
|
||||
assertTrue (pool.idle() == 0);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 1);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -109,6 +113,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 3);
|
||||
assertTrue (pool.idle() == 1);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 2);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -120,6 +125,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 3);
|
||||
assertTrue (pool.idle() == 0);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 1);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -129,6 +135,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 4);
|
||||
assertTrue (pool.idle() == 0);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 0);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -144,6 +151,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 4);
|
||||
assertTrue (pool.idle() == 1);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 1);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -159,6 +167,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 4);
|
||||
assertTrue (pool.idle() == 2);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 2);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -168,6 +177,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 2);
|
||||
assertTrue (pool.idle() == 0);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 2);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -177,6 +187,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 3);
|
||||
assertTrue (pool.idle() == 0);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 1);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -188,6 +199,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 2);
|
||||
assertTrue (pool.idle() == 0);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 2);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
@ -205,6 +217,7 @@ void SessionPoolTest::testSessionPool()
|
||||
assertTrue (pool.capacity() == 4);
|
||||
assertTrue (pool.allocated() == 0);
|
||||
assertTrue (pool.idle() == 0);
|
||||
assertTrue (pool.connTimeout() == 10);
|
||||
assertTrue (pool.available() == 0);
|
||||
assertTrue (pool.dead() == 0);
|
||||
assertTrue (pool.allocated() == pool.used() + pool.idle());
|
||||
|
Loading…
x
Reference in New Issue
Block a user