logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
commit: adb1b0282dfbced2b2986c90cff765be37dd5151
parent 5c4ff5c73ce41f252e99a3c5c445efcecaa43dfe
Author: rinpatch <rinpatch@sdf.org>
Date:   Wed, 16 Sep 2020 17:23:05 +0300

ConnectionPool Worker: use monitor flush instead of checking ref

`:flush` removes the DOWN message if one had arrived, so this check
should no longer be necessary.

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