Browse Source

add setting pooler_max_queue

Yuriy Zhloba 9 years ago
parent
commit
85d38fd718
3 changed files with 7 additions and 1 deletions
  1. 2 0
      src/epgsql_pool.erl
  2. 3 1
      src/epgsql_pool_settings.erl
  3. 2 0
      test/epgsql_pool_tests.erl

+ 2 - 0
src/epgsql_pool.erl

@@ -29,10 +29,12 @@ start(PoolName, InitCount, MaxCount, ConnectionParams) when is_map(ConnectionPar
 start(PoolName0, InitCount, MaxCount, #epgsql_connection_params{} = ConnectionParams) ->
     epgsql_pool_settings:set_connection_params(my_pool, ConnectionParams),
     PoolName = epgsql_pool_utils:pool_name_to_atom(PoolName0),
+    MaxQueue = epgsql_pool_settings:get(pooler_max_queue),
     case epgsql_pool_settings:get_connection_params(PoolName) of
         {ok, _} -> PoolConfig = [{name, PoolName},
                                  {init_count, InitCount},
                                  {max_count, MaxCount},
+                                 {queue_max, MaxQueue},
                                  {start_mfa, {epgsql_pool_worker, start_link, [PoolName]}},
                                  {stop_mfa, {epgsql_pool_worker, stop, []}}
                                 ],

+ 3 - 1
src/epgsql_pool_settings.erl

@@ -48,7 +48,8 @@ set(Key, Value) ->
 
 -spec all_keys() -> [atom()].
 all_keys() ->
-    [connection_timeout, query_timeout, pooler_get_worker_timeout,
+    [connection_timeout, query_timeout,
+     pooler_get_worker_timeout, pooler_max_queue,
      max_reconnect_timeout, min_reconnect_timeout, keep_alive_timeout].
 
 
@@ -60,6 +61,7 @@ init([]) ->
     ets:insert(T, {{settings, connection_timeout}, 10000}),
     ets:insert(T, {{settings, query_timeout}, 10000}),
     ets:insert(T, {{settings, pooler_get_worker_timeout}, 10000}),
+    ets:insert(T, {{settings, pooler_max_queue}, 100}),
     ets:insert(T, {{settings, max_reconnect_timeout}, 5000}),
     ets:insert(T, {{settings, min_reconnect_timeout}, 100}),
     ets:insert(T, {{settings, keep_alive_timeout}, 60000}),

+ 2 - 0
test/epgsql_pool_tests.erl

@@ -12,6 +12,7 @@ get_set_settings_test() ->
                    max_reconnect_timeout => 5000,
                    min_reconnect_timeout => 100,
                    pooler_get_worker_timeout => 10000,
+                   pooler_max_queue => 100,
                    query_timeout => 10000},
                  epgsql_pool:get_settings()),
 
@@ -27,6 +28,7 @@ get_set_settings_test() ->
                    max_reconnect_timeout => 777,
                    min_reconnect_timeout => 42,
                    pooler_get_worker_timeout => 10000,
+                   pooler_max_queue => 100,
                    query_timeout => 555},
                  epgsql_pool:get_settings()),