diff options
| author | Marko Kreen | 2015-07-31 13:08:29 +0000 |
|---|---|---|
| committer | Marko Kreen | 2015-07-31 13:08:29 +0000 |
| commit | bb22310e7cca37d09157d407e4a8c1bbae23e681 (patch) | |
| tree | 72c6237d0a40cc8d0aec7e4462868b0f43dc21c9 /src/janitor.c | |
| parent | be694be1bd6782ab4fac7fc8f8fb25c56c05531e (diff) | |
Disable server_idle_timeout when server count gets below min_pool (#60)
Diffstat (limited to 'src/janitor.c')
| -rw-r--r-- | src/janitor.c | 15 |
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); |
