Skip to content

Commit

Permalink
fix: always monitor manager
Browse files Browse the repository at this point in the history
  • Loading branch information
chasers committed Nov 26, 2024
1 parent 9453cf8 commit 4c8bc47
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions lib/supavisor/client_handler.ex
Original file line number Diff line number Diff line change
Expand Up @@ -395,10 +395,10 @@ defmodule Supavisor.ClientHandler do
else: true
),
{:ok, opts} <- Supavisor.subscribe(sup, data.id) do
Process.monitor(opts.workers.manager)
manager_ref = Process.monitor(opts.workers.manager)
data = Map.merge(data, opts.workers)
db_pid = db_checkout(:both, :on_connect, data)
data = %{data | db_pid: db_pid, idle_timeout: opts.idle_timeout}
data = %{data | manager: manager_ref, db_pid: db_pid, idle_timeout: opts.idle_timeout}

next =
if opts.ps == [],
Expand All @@ -424,6 +424,8 @@ defmodule Supavisor.ClientHandler do
:proxy ->
case Supavisor.get_pool_ranch(data.id) do
{:ok, %{port: port, host: host}} ->
manager_ref = Process.monitor(opts.workers.manager)

Check warning on line 427 in lib/supavisor/client_handler.ex

View workflow job for this annotation

GitHub Actions / Dialyze

variable "opts" does not exist and is being expanded to "opts()", please use parentheses to remove the ambiguity or change the variable name

Check failure on line 427 in lib/supavisor/client_handler.ex

View workflow job for this annotation

GitHub Actions / Dialyze

** (CompileError) lib/supavisor/client_handler.ex:427: undefined function opts/0 (expected Supavisor.ClientHandler to define such a function or for it to be imported, but none are available)

auth =
Map.merge(data.auth, %{
port: port,
Expand All @@ -434,7 +436,8 @@ defmodule Supavisor.ClientHandler do
upstream_verify: nil
})

{:keep_state, %{data | auth: auth}, {:next_event, :internal, :connect_db}}
{:keep_state, %{data | auth: auth, manager: manager_ref},
{:next_event, :internal, :connect_db}}

other ->
Logger.error("ClientHandler: Subscribe proxy error: #{inspect(other)}")
Expand Down Expand Up @@ -623,7 +626,8 @@ defmodule Supavisor.ClientHandler do
end

# pool's manager went down
def handle_event(:info, {:DOWN, _, _, _, reason}, state, data) do
def handle_event(:info, {:DOWN, ref, _, _, reason}, state, %{manager: manager_ref} = data)
when ref == manager_ref do
Logger.error(
"ClientHandler: Manager #{inspect(data.manager)} went down #{inspect(reason)} state #{inspect(state)}"
)
Expand Down

0 comments on commit 4c8bc47

Please sign in to comment.