Browse Source

gun ConnectionPool: Re-add a missing cast for remove_client

frontends/logic-flow
rinpatch 3 years ago
parent
commit
dab1d8c98e
2 changed files with 12 additions and 4 deletions
  1. +1
    -1
      lib/pleroma/gun/connection_pool.ex
  2. +11
    -3
      lib/pleroma/gun/connection_pool/worker.ex

+ 1
- 1
lib/pleroma/gun/connection_pool.ex View File

@@ -45,7 +45,7 @@ defmodule Pleroma.Gun.ConnectionPool do
# so instead we use cast + monitor

ref = Process.monitor(worker_pid)
if register, do: GenServer.cast(worker_pid, {:add_client, self(), true})
if register, do: GenServer.cast(worker_pid, {:add_client, self()})

receive do
{:conn_pid, pid} ->


+ 11
- 3
lib/pleroma/gun/connection_pool/worker.ex View File

@@ -36,10 +36,18 @@ defmodule Pleroma.Gun.ConnectionPool.Worker do
end

@impl true
def handle_cast({:add_client, client_pid, send}, state) do
def handle_cast({:add_client, client_pid}, state) do
case handle_call(:add_client, {client_pid, nil}, state) do
{:reply, conn_pid, state, :hibernate} ->
if send, do: send(client_pid, {:conn_pid, conn_pid})
send(client_pid, {:conn_pid, conn_pid})
{:noreply, state, :hibernate}
end
end

@impl true
def handle_cast({:remove_client, client_pid}, state) do
case handle_call(:remove_client, {client_pid, nil}, state) do
{:reply, _, state, :hibernate} ->
{:noreply, state, :hibernate}
end
end
@@ -115,7 +123,7 @@ defmodule Pleroma.Gun.ConnectionPool.Worker do
%{key: state.key}
)

handle_cast({:remove_client, pid, false}, state)
handle_cast({:remove_client, pid}, state)
end

# LRFU policy: https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.1478


Loading…
Cancel
Save