who_need_help/lib/who_need_help_web/drain_state.ex

27 lines
635 B
Elixir

defmodule WhoNeedHelpWeb.DrainState do
@moduledoc """
Tracks whether the current web node is draining before a planned shutdown.
The flag is node-local by design. Operators can mark one replica as draining
through a release RPC; readiness then fails on that replica while liveness
remains available.
"""
@key {__MODULE__, :draining}
@spec reset() :: :ok
def reset do
:persistent_term.put(@key, false)
:ok
end
@spec begin_drain() :: :ok
def begin_drain do
:persistent_term.put(@key, true)
:ok
end
@spec draining?() :: boolean()
def draining?, do: :persistent_term.get(@key, false)
end