fix(portal): use distinct slot names (#9672)

These were being configured using the same default `events_` value.
This commit is contained in:
Jamil
2025-06-25 10:28:17 -07:00
committed by GitHub
parent bf03e13cf0
commit bebc69e2bc
4 changed files with 23 additions and 11 deletions

View File

@@ -316,12 +316,22 @@ defmodule Domain.Config.Definitions do
@doc """
Name of the replication slot used by Firezone.
"""
defconfig(:database_replication_slot_name, :string, default: "events_slot")
defconfig(:database_events_replication_slot_name, :string, default: "events_slot")
@doc """
Name of the publication used by Firezone.
"""
defconfig(:database_publication_name, :string, default: "events")
defconfig(:database_events_publication_name, :string, default: "events")
@doc """
Name of the replication slot used by Firezone.
"""
defconfig(:database_change_logs_replication_slot_name, :string, default: "change_logs_slot")
@doc """
Name of the publication used by Firezone.
"""
defconfig(:database_change_logs_publication_name, :string, default: "change_logs")
@doc """
SSL options for connecting to the PostgreSQL database.

View File

@@ -65,11 +65,9 @@ defmodule Domain.Replication.Connection do
quote bind_quoted: [opts: opts] do
# Only these two are configurable
@alert_threshold_ms Keyword.fetch!(opts, :alert_threshold_ms)
@publication_name Keyword.fetch!(opts, :publication_name)
# Everything else uses defaults
@status_log_interval :timer.minutes(5)
@replication_slot_name "#{@publication_name}_slot"
@schema "public"
@output_plugin "pgoutput"
@proto_version 1
@@ -98,8 +96,8 @@ defmodule Domain.Replication.Connection do
defstruct schema: @schema,
step: :disconnected,
publication_name: @publication_name,
replication_slot_name: @replication_slot_name,
publication_name: "",
replication_slot_name: "",
output_plugin: @output_plugin,
proto_version: @proto_version,
table_subscriptions: [],
@@ -243,7 +241,7 @@ defmodule Domain.Replication.Connection do
end
def handle_result([%Postgrex.Result{}], %__MODULE__{step: :start_replication_slot} = state) do
Logger.info("Starting replication slot #{state.replication_slot_name}",
Logger.info("#{__MODULE__}: Starting replication slot #{state.replication_slot_name}",
state: inspect(state)
)

View File

@@ -29,8 +29,8 @@ if config_env() == :prod do
config :domain, Domain.ChangeLogs.ReplicationConnection,
enabled: env_var_to_config!(:background_jobs_enabled),
replication_slot_name: env_var_to_config!(:database_replication_slot_name),
publication_name: env_var_to_config!(:database_publication_name),
replication_slot_name: env_var_to_config!(:database_change_logs_replication_slot_name),
publication_name: env_var_to_config!(:database_change_logs_publication_name),
connection_opts: [
hostname: env_var_to_config!(:database_host),
port: env_var_to_config!(:database_port),
@@ -44,8 +44,8 @@ if config_env() == :prod do
config :domain, Domain.Events.ReplicationConnection,
enabled: env_var_to_config!(:background_jobs_enabled),
replication_slot_name: env_var_to_config!(:database_replication_slot_name),
publication_name: env_var_to_config!(:database_publication_name),
replication_slot_name: env_var_to_config!(:database_events_replication_slot_name),
publication_name: env_var_to_config!(:database_events_publication_name),
connection_opts: [
hostname: env_var_to_config!(:database_host),
port: env_var_to_config!(:database_port),

View File

@@ -21,12 +21,16 @@ config :domain, Domain.Repo,
queue_target: 1000
config :domain, Domain.ChangeLogs.ReplicationConnection,
replication_slot_name: "test_change_logs_slot",
publication_name: "test_change_logs_publication",
enabled: false,
connection_opts: [
database: "firezone_test#{partition_suffix}"
]
config :domain, Domain.Events.ReplicationConnection,
replication_slot_name: "test_events_slot",
publication_name: "test_events_publication",
enabled: false,
connection_opts: [
database: "firezone_test#{partition_suffix}"