logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: a4f80e1e741bc49d8d3eb185448a457308dda3ba
parent: eca8d267846afc802f9a5ceed036482a9c90b4e2
Author: rinpatch <rinpatch@sdf.org>
Date:   Wed, 16 Sep 2020 15:10:20 +0000

Merge branch 'feat/connection-worker-monitor-flush' into 'develop'

ConnectionPool Worker: use monitor flush instead of checking ref

See merge request pleroma/pleroma!3002

Diffstat:

Mlib/pleroma/gun/connection_pool/worker.ex23++++++++---------------
1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/lib/pleroma/gun/connection_pool/worker.ex b/lib/pleroma/gun/connection_pool/worker.ex @@ -93,25 +93,18 @@ defmodule Pleroma.Gun.ConnectionPool.Worker do end) {ref, state} = pop_in(state.client_monitors[client_pid]) - # DOWN message can receive right after `remove_client` call and cause worker to terminate - state = - if is_nil(ref) do - state - else - Process.demonitor(ref) - timer = - if used_by == [] do - max_idle = Pleroma.Config.get([:connections_pool, :max_idle_time], 30_000) - Process.send_after(self(), :idle_close, max_idle) - else - nil - end + Process.demonitor(ref, [:flush]) - %{state | timer: timer} + timer = + if used_by == [] do + max_idle = Pleroma.Config.get([:connections_pool, :max_idle_time], 30_000) + Process.send_after(self(), :idle_close, max_idle) + else + nil end - {:reply, :ok, state, :hibernate} + {:reply, :ok, %{state | timer: timer}, :hibernate} end @impl true