key = "#{uri.scheme}:#{uri.host}:#{uri.port}"
- Logger.debug("opening new connection #{Connections.compose_uri_log(uri)}")
+ max_connections = pool_opts[:max_connections] || 250
conn_pid =
- if Connections.count(name) < opts[:max_connection] do
+ if Connections.count(name) < max_connections do
do_open(uri, opts)
else
close_least_used_and_do_open(name, uri, opts)
else
error ->
Logger.warn(
- "Received error on opening connection with http proxy #{
- Connections.compose_uri_log(uri)
- } #{inspect(error)}"
+ "Opening proxied connection to #{compose_uri_log(uri)} failed with error #{
+ inspect(error)
+ }"
)
error
else
error ->
Logger.warn(
- "Received error on opening connection with socks proxy #{
- Connections.compose_uri_log(uri)
- } #{inspect(error)}"
+ "Opening socks proxied connection to #{compose_uri_log(uri)} failed with error #{
+ inspect(error)
+ }"
)
error
else
error ->
Logger.warn(
- "Received error on opening connection #{Connections.compose_uri_log(uri)} #{
- inspect(error)
- }"
+ "Opening connection to #{compose_uri_log(uri)} failed with error #{inspect(error)}"
)
error
defp add_http2_opts(opts, _, _), do: opts
defp close_least_used_and_do_open(name, uri, opts) do
- Logger.debug("try to open conn #{Connections.compose_uri_log(uri)}")
-
- with [{close_key, least_used} | _conns] <-
- Connections.get_unused_conns(name),
- :ok <- Gun.close(least_used.conn) do
- Connections.remove_conn(name, close_key)
+ with [{key, conn} | _conns] <- Connections.get_unused_conns(name),
+ :ok <- Gun.close(conn.conn) do
+ Connections.remove_conn(name, key)
do_open(uri, opts)
else
[] -> {:error, :pool_overflowed}
end
end
+
+ def compose_uri_log(%URI{scheme: scheme, host: host, path: path}) do
+ "#{scheme}://#{host}#{path}"
+ end
end