27 lines
635 B
Elixir
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
|