diff --git a/lib/realtime/tenants/migrations.ex b/lib/realtime/tenants/migrations.ex index 43f5540d2..e00d8ca3c 100644 --- a/lib/realtime/tenants/migrations.ex +++ b/lib/realtime/tenants/migrations.ex @@ -75,7 +75,8 @@ defmodule Realtime.Tenants.Migrations do RealtimeSubscriptionLogged, RemoveUnusedPublications, RealtimeSendSetsTopicConfig, - SubscriptionIndexBridgingDisabled + SubscriptionIndexBridgingDisabled, + RunSubscriptionIndexBridgingDisabled } @migrations [ @@ -139,7 +140,8 @@ defmodule Realtime.Tenants.Migrations do {20_250_110_162_412, RealtimeSubscriptionLogged}, {20_250_123_174_212, RemoveUnusedPublications}, {20_250_128_220_012, RealtimeSendSetsTopicConfig}, - {20_250_506_224_012, SubscriptionIndexBridgingDisabled} + {20_250_506_224_012, SubscriptionIndexBridgingDisabled}, + {20_250_523_164_012, RunSubscriptionIndexBridgingDisabled} ] defstruct [:tenant_external_id, :settings] diff --git a/lib/realtime/tenants/repo/migrations/20250523164012_run_subscription_index_bridging_disabled.ex b/lib/realtime/tenants/repo/migrations/20250523164012_run_subscription_index_bridging_disabled.ex new file mode 100644 index 000000000..2039f96e6 --- /dev/null +++ b/lib/realtime/tenants/repo/migrations/20250523164012_run_subscription_index_bridging_disabled.ex @@ -0,0 +1,10 @@ +defmodule Realtime.Tenants.Migrations.RunSubscriptionIndexBridgingDisabled do + @moduledoc false + use Ecto.Migration + + def change do + execute(""" + alter table realtime.subscription reset (index_bridging); + """) + end +end diff --git a/mix.exs b/mix.exs index 2b388ee7f..817e6fcf2 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Realtime.MixProject do def project do [ app: :realtime, - version: "2.55.6", + version: "2.55.7", elixir: "~> 1.17.3", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, diff --git a/test/realtime/messages_test.exs b/test/realtime/messages_test.exs index dd7e6b2f0..3bef9a5e0 100644 --- a/test/realtime/messages_test.exs +++ b/test/realtime/messages_test.exs @@ -42,6 +42,6 @@ defmodule Realtime.MessagesTest do assert :ok = Messages.delete_old_messages(conn) {:ok, current} = Repo.all(conn, from(m in Message), Message) - assert current == to_keep + assert Enum.sort(current) == Enum.sort(to_keep) end end diff --git a/test/realtime/repo_test.exs b/test/realtime/repo_test.exs index f1a0e5de7..7d6841b01 100644 --- a/test/realtime/repo_test.exs +++ b/test/realtime/repo_test.exs @@ -18,7 +18,8 @@ defmodule Realtime.RepoTest do message_1 = message_fixture(tenant) message_2 = message_fixture(tenant) - assert {:ok, [^message_1, ^message_2] = res} = Repo.all(db_conn, Message, Message) + assert {:ok, res} = Repo.all(db_conn, Message, Message) + assert Enum.sort([message_1, message_2]) == Enum.sort(res) assert Enum.all?(res, &(Ecto.get_meta(&1, :state) == :loaded)) end diff --git a/test/support/containers.ex b/test/support/containers.ex index 3aee8ad18..4f5906de7 100644 --- a/test/support/containers.ex +++ b/test/support/containers.ex @@ -8,6 +8,17 @@ defmodule Containers do use GenServer @image "supabase/postgres:15.8.1.040" + # Pull image if not available + def pull do + case System.cmd("docker", ["image", "inspect", @image]) do + {_, 0} -> + :ok + + _ -> + IO.puts("Pulling image #{@image}. This might take a while...") + {_, 0} = System.cmd("docker", ["pull", @image]) + end + end def start_container(), do: GenServer.call(__MODULE__, :start_container, 10_000) def port(), do: GenServer.call(__MODULE__, :port, 10_000) diff --git a/test/support/containers/container.ex b/test/support/containers/container.ex index 79a37679b..b23a4478f 100644 --- a/test/support/containers/container.ex +++ b/test/support/containers/container.ex @@ -6,12 +6,18 @@ defmodule Containers.Container do end def port(pid), do: GenServer.call(pid, :port, 15_000) + def name(pid), do: GenServer.call(pid, :name, 15_000) @impl true def handle_call(:port, _from, state) do {:reply, state[:port], state} end + @impl true + def handle_call(:name, _from, state) do + {:reply, state[:name], state} + end + @impl true def init(_args) do {:ok, %{}, {:continue, :start_container}} diff --git a/test/test_helper.exs b/test/test_helper.exs index f505b5eef..4f32a8348 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -6,6 +6,8 @@ ExUnit.start(exclude: [:failing], max_cases: 2, capture_log: true) max_cases = ExUnit.configuration()[:max_cases] +Containers.pull() + if System.get_env("REUSE_CONTAINERS") != "true" do Containers.stop_containers() Containers.stop_container("dev_tenant")