summaryrefslogtreecommitdiff
path: root/src/janitor.c
diff options
context:
space:
mode:
authorMarko Kreen2015-07-31 13:08:29 +0000
committerMarko Kreen2015-07-31 13:08:29 +0000
commitbb22310e7cca37d09157d407e4a8c1bbae23e681 (patch)
tree72c6237d0a40cc8d0aec7e4462868b0f43dc21c9 /src/janitor.c
parentbe694be1bd6782ab4fac7fc8f8fb25c56c05531e (diff)
Disable server_idle_timeout when server count gets below min_pool (#60)
Diffstat (limited to 'src/janitor.c')
-rw-r--r--src/janitor.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/src/janitor.c b/src/janitor.c
index b29b4be..7883f23 100644
--- a/src/janitor.c
+++ b/src/janitor.c
@@ -392,7 +392,8 @@ static void check_unused_servers(PgPool *pool, struct StatList *slist, bool idle
disconnect_server(server, true, "SV_IDLE server got dirty");
} else if (server->state == SV_USED && !server->ready) {
disconnect_server(server, true, "SV_USED server got dirty");
- } else if (cf_server_idle_timeout > 0 && idle > cf_server_idle_timeout) {
+ } else if (cf_server_idle_timeout > 0 && idle > cf_server_idle_timeout
+ && (cf_min_pool_size == 0 || pool_connected_server_count(pool) > cf_min_pool_size)) {
disconnect_server(server, true, "server idle timeout");
} else if (age >= cf_server_lifetime) {
if (pool->last_lifetime_disconnect + lifetime_kill_gap <= now) {
@@ -415,17 +416,7 @@ static void check_unused_servers(PgPool *pool, struct StatList *slist, bool idle
static void check_pool_size(PgPool *pool)
{
PgSocket *server;
- int cur = statlist_count(&pool->active_server_list)
- + statlist_count(&pool->idle_server_list)
- + statlist_count(&pool->used_server_list)
- + statlist_count(&pool->tested_server_list);
-
- /* cancel pkt may create new srv conn without
- * taking pool_size into account
- *
- * statlist_count(&pool->new_server_list)
- */
-
+ int cur = pool_connected_server_count(pool);
int many = cur - (pool->db->pool_size + pool->db->res_pool_size);
Assert(pool->db->pool_size >= 0);