ha-handler/lib/ha_handler/pgsql/watcher.ex

39 lines
1.1 KiB
Elixir
Raw Permalink Normal View History

2022-02-19 10:18:05 +01:00
defmodule HAHandler.PGSQL.Watcher do
use GenServer
require Logger
2022-02-19 10:18:05 +01:00
def start_link(opts) do
GenServer.start_link(__MODULE__, opts)
end
2022-02-19 10:18:05 +01:00
@impl true
def init(opts) do
2022-07-04 12:36:34 +02:00
# Configures this worker's jobs to report in the "pgsql" namespace
Appsignal.Span.set_namespace(Appsignal.Tracer.root_span(), "pgsql")
# Starts a Postgrex child but does not means the connection was
# successful.
# TODO: set dbconnections backoff and connect hooks
# See https://github.com/elixir-ecto/db_connection/blob/master/lib/db_connection.ex#L343
case Postgrex.start_link(opts) do
{:ok, pid} ->
state = %{
backend: pid,
hostname: Keyword.get(opts, :hostname)
}
2022-02-19 10:18:05 +01:00
{:ok, state}
{:error, err} ->
# Will be catched by the supervisor if anything happen. It should not
# be triggered even if a PGSQL node down, since Postgrex has its own
# surpervision tree.
{:error, err}
end
end
2022-02-19 10:18:05 +01:00
@impl true
def handle_call({:execute, query, params}, _from, %{backend: backend} = state) do
{:reply, Postgrex.query(backend, query, params), state}
end
2022-02-19 10:18:05 +01:00
end