removing unnecessary with

comment in tesla client impovement
This commit is contained in:
Alexander Strizhakov 2020-03-03 14:56:49 +03:00
parent 24d1ac125c
commit d0e4d3ca3b
No known key found for this signature in database
GPG Key ID: 022896A53AEF1381
2 changed files with 25 additions and 23 deletions

View File

@ -36,17 +36,16 @@ def checkin(url, name) when is_binary(url), do: checkin(URI.parse(url), name)
def checkin(%URI{} = uri, name) do
timeout = Config.get([:connections_pool, :checkin_timeout], 250)
GenServer.call(
name,
{:checkin, uri},
timeout
)
GenServer.call(name, {:checkin, uri}, timeout)
end
@spec alive?(atom()) :: boolean()
def alive?(name) do
pid = Process.whereis(name)
if pid, do: Process.alive?(pid), else: false
if pid = Process.whereis(name) do
Process.alive?(pid)
else
false
end
end
@spec get_state(atom()) :: t()
@ -131,19 +130,20 @@ def handle_call({:checkin, uri}, from, state) do
%{conn: conn, gun_state: :up} = current_conn ->
Logger.debug("reusing conn #{key}")
with time <- :os.system_time(:second),
last_reference <- time - current_conn.last_reference,
current_crf <- crf(last_reference, 100, current_conn.crf),
state <-
put_in(state.conns[key], %{
current_conn
| last_reference: time,
crf: current_crf,
conn_state: :active,
used_by: [from | current_conn.used_by]
}) do
{:reply, conn, state}
end
time = :os.system_time(:second)
last_reference = time - current_conn.last_reference
current_crf = crf(last_reference, 100, current_conn.crf)
state =
put_in(state.conns[key], %{
current_conn
| last_reference: time,
crf: current_crf,
conn_state: :active,
used_by: [from | current_conn.used_by]
})
{:reply, conn, state}
%{gun_state: :down} ->
{:reply, nil, state}

View File

@ -18,8 +18,9 @@ defmodule Pleroma.ReverseProxy.Client.Tesla do
def request(method, url, headers, body, opts \\ []) do
check_adapter()
with opts <- Keyword.merge(opts, body_as: :chunks, mode: :passive),
{:ok, response} <-
opts = Keyword.merge(opts, body_as: :chunks)
with {:ok, response} <-
Pleroma.HTTP.request(
method,
url,
@ -40,7 +41,8 @@ def request(method, url, headers, body, opts \\ []) do
@impl true
@spec stream_body(map()) :: {:ok, binary(), map()} | {:error, atom() | String.t()} | :done
def stream_body(%{pid: pid, opts: opts, fin: true}) do
# if connection was sended and there were redirects, we need to close new conn - pid manually
# if connection was reused, but in tesla were redirects,
# tesla returns new opened connection, which must be closed manually
if opts[:old_conn], do: Tesla.Adapter.Gun.close(pid)
# if there were redirects we need to checkout old conn
conn = opts[:old_conn] || opts[:conn]