From 31212f817398b5f43977d9803793e5d6befa21e7 Mon Sep 17 00:00:00 2001 From: Juraj Paluba Date: Sun, 7 Dec 2025 22:50:49 +0100 Subject: [PATCH] feat(libcluster): configure libcluster --- config/config.exs | 8 ++++++++ lib/dbreplex.ex | 3 +++ mix.exs | 3 ++- mix.lock | 2 ++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/config/config.exs b/config/config.exs index ed22008..4ed020c 100644 --- a/config/config.exs +++ b/config/config.exs @@ -15,3 +15,11 @@ import Config # level: :info, # format: "$date $time [$level] $metadata$message\n", # metadata: [:user_id] + +config :libcluster, + topologies: [ + local: [ + strategy: Cluster.Strategy.Epmd, + config: [hosts: [:a@fedora, :b@fedora]] + ] + ] diff --git a/lib/dbreplex.ex b/lib/dbreplex.ex index 0f6feee..a236785 100644 --- a/lib/dbreplex.ex +++ b/lib/dbreplex.ex @@ -6,7 +6,10 @@ defmodule DBReplex do @impl true def start(_type, _args) do + topologies = Application.get_env(:libcluster, :topologies) + children = [ + {Cluster.Supervisor, [topologies, [name: DBReplex.ClusterSupervisor]]}, {DynamicSupervisor, strategy: :one_for_one, name: MainApp.DynamicSupervisor}, {Registry, [keys: :duplicate, name: PublisherRegistry]} ] diff --git a/mix.exs b/mix.exs index ca7fcde..9707550 100644 --- a/mix.exs +++ b/mix.exs @@ -28,7 +28,8 @@ defmodule DbSubscriptor.MixProject do [ {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:postgrex, "~> 0.20.0"}, - {:boundary, "~> 0.10", runtime: false} + {:boundary, "~> 0.10", runtime: false}, + {:libcluster, "~> 3.5"} ] end end diff --git a/mix.lock b/mix.lock index 865e8e7..1307495 100644 --- a/mix.lock +++ b/mix.lock @@ -4,6 +4,8 @@ "decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"}, "dialyxir": {:hex, :dialyxir, "1.4.5", "ca1571ac18e0f88d4ab245f0b60fa31ff1b12cbae2b11bd25d207f865e8ae78a", [:mix], [{:erlex, ">= 0.2.7", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "b0fb08bb8107c750db5c0b324fa2df5ceaa0f9307690ee3c1f6ba5b9eb5d35c3"}, "erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"}, + "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, + "libcluster": {:hex, :libcluster, "3.5.0", "5ee4cfde4bdf32b2fef271e33ce3241e89509f4344f6c6a8d4069937484866ba", [:mix], [{:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.3", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ebf6561fcedd765a4cd43b4b8c04b1c87f4177b5fb3cbdfe40a780499d72f743"}, "postgrex": {:hex, :postgrex, "0.20.0", "363ed03ab4757f6bc47942eff7720640795eb557e1935951c1626f0d303a3aed", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "d36ef8b36f323d29505314f704e21a1a038e2dc387c6409ee0cd24144e187c0f"}, "telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"}, }