From 23914b88a6d247f430351ce3576f72ce87f7f416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filipe=20Caba=C3=A7o?= Date: Thu, 23 Jan 2025 17:51:57 +0000 Subject: [PATCH 1/3] fix: Set fixed publication name; cleanup unused publications --- lib/realtime/tenants/migrations.ex | 6 ++++-- .../tenants/replication_connection.ex | 2 +- ...250123174212_remove_unused_publications.ex | 20 +++++++++++++++++++ mix.exs | 2 +- 4 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 lib/realtime/tenants/repo/migrations/20250123174212_remove_unused_publications.ex diff --git a/lib/realtime/tenants/migrations.ex b/lib/realtime/tenants/migrations.ex index 7f4bb96fd..9f979a0c0 100644 --- a/lib/realtime/tenants/migrations.ex +++ b/lib/realtime/tenants/migrations.ex @@ -71,7 +71,8 @@ defmodule Realtime.Tenants.Migrations do RealtimeSendHandleExceptionsRemovePartitionCreation, RealtimeSendSetsConfig, RealtimeSubscriptionUnlogged, - RealtimeSubscriptionLogged + RealtimeSubscriptionLogged, + RemoveUnusedPublications } @migrations [ @@ -133,7 +134,8 @@ defmodule Realtime.Tenants.Migrations do {20_241_220_123_912, RealtimeSendHandleExceptionsRemovePartitionCreation}, {20_241_224_161_212, RealtimeSendSetsConfig}, {20_250_107_150_512, RealtimeSubscriptionUnlogged}, - {20_250_110_162_412, RealtimeSubscriptionLogged} + {20_250_110_162_412, RealtimeSubscriptionLogged}, + {20_250_123_174_212, RemoveUnusedPublications} ] defstruct [:tenant_external_id, :settings] diff --git a/lib/realtime/tenants/replication_connection.ex b/lib/realtime/tenants/replication_connection.ex index 99dbbfdab..a22583335 100644 --- a/lib/realtime/tenants/replication_connection.ex +++ b/lib/realtime/tenants/replication_connection.ex @@ -349,7 +349,7 @@ defmodule Realtime.Tenants.ReplicationConnection do end def publication_name(%__MODULE__{table: table, schema: schema}) do - "supabase_#{schema}_#{table}_publication_#{slot_suffix()}" + "supabase_#{schema}_#{table}_publication" end def replication_slot_name(%__MODULE__{table: table, schema: schema}) do diff --git a/lib/realtime/tenants/repo/migrations/20250123174212_remove_unused_publications.ex b/lib/realtime/tenants/repo/migrations/20250123174212_remove_unused_publications.ex new file mode 100644 index 000000000..76e7e9f07 --- /dev/null +++ b/lib/realtime/tenants/repo/migrations/20250123174212_remove_unused_publications.ex @@ -0,0 +1,20 @@ +defmodule Realtime.Tenants.Migrations.RemoveUnusedPublications do + @moduledoc false + use Ecto.Migration + + # Due to issues on PG Updates we can't use UNLOGGED tables due to the fact that Sequences on PG14 still need to be logged + def change do + execute(""" + DO $$ + DECLARE + r RECORD; + BEGIN + FOR r IN + SELECT pubname FROM pg_publication WHERE pubname LIKE 'realtime_messages%' or pubname LIKE 'supabase_realtime_messages%' + LOOP + EXECUTE 'DROP PUBLICATION IF EXISTS ' || quote_ident(r.pubname) || ';' ; + END LOOP; + END $$; + """) + end +end diff --git a/mix.exs b/mix.exs index b2cb9fa23..0da077e06 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Realtime.MixProject do def project do [ app: :realtime, - version: "2.34.6", + version: "2.34.7", elixir: "~> 1.17.3", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, From e5deb51d374ded1350b7ea9c5df14cd0d20d38b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filipe=20Caba=C3=A7o?= Date: Thu, 23 Jan 2025 19:20:31 +0000 Subject: [PATCH 2/3] add metric --- lib/realtime/monitoring/prom_ex/plugins/tenants.ex | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/realtime/monitoring/prom_ex/plugins/tenants.ex b/lib/realtime/monitoring/prom_ex/plugins/tenants.ex index 719b1bbf2..c89737ac6 100644 --- a/lib/realtime/monitoring/prom_ex/plugins/tenants.ex +++ b/lib/realtime/monitoring/prom_ex/plugins/tenants.ex @@ -45,6 +45,16 @@ defmodule Realtime.PromEx.Plugins.Tenants do event_name: @event_connected, description: "The total count of connected tenants.", measurement: :connected + ), + last_value([:realtime, :tenants, :read_authorization_check], + event_name: [:prom_ex, :plugin, :realtime, :tenants, :read_authorization_check], + description: "The total count of read authorization checks.", + measurement: :read_authorization_check + ), + last_value([:realtime, :tenants, :write_authorization_check], + event_name: [:prom_ex, :plugin, :realtime, :tenants, :write_authorization_check], + description: "The total count of write authorization checks.", + measurement: :write_authorization_check ) ] ) From 492351f7bbe81e398fec47073be2ba9db10d9dea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filipe=20Caba=C3=A7o?= Date: Thu, 23 Jan 2025 19:24:20 +0000 Subject: [PATCH 3/3] Revert "add metric" This reverts commit e5deb51d374ded1350b7ea9c5df14cd0d20d38b9. --- lib/realtime/monitoring/prom_ex/plugins/tenants.ex | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lib/realtime/monitoring/prom_ex/plugins/tenants.ex b/lib/realtime/monitoring/prom_ex/plugins/tenants.ex index c89737ac6..719b1bbf2 100644 --- a/lib/realtime/monitoring/prom_ex/plugins/tenants.ex +++ b/lib/realtime/monitoring/prom_ex/plugins/tenants.ex @@ -45,16 +45,6 @@ defmodule Realtime.PromEx.Plugins.Tenants do event_name: @event_connected, description: "The total count of connected tenants.", measurement: :connected - ), - last_value([:realtime, :tenants, :read_authorization_check], - event_name: [:prom_ex, :plugin, :realtime, :tenants, :read_authorization_check], - description: "The total count of read authorization checks.", - measurement: :read_authorization_check - ), - last_value([:realtime, :tenants, :write_authorization_check], - event_name: [:prom_ex, :plugin, :realtime, :tenants, :write_authorization_check], - description: "The total count of write authorization checks.", - measurement: :write_authorization_check ) ] )