summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit.erl2
-rw-r--r--src/rabbit_quorum_queue.erl27
2 files changed, 22 insertions, 7 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index d748fdaf7c..febc4b2744 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -534,7 +534,7 @@ start_loaded_apps(Apps, RestartTypes) ->
ensure_sysmon_handler_app_config(),
%% make Ra use a custom logger that dispatches to lager instead of the
%% default OTP logger
- application:set_env(ra, logger_module, rabbit_ra_logger),
+ application:set_env(ra, logger_module, rabbit_log_ra_shim),
ConfigEntryDecoder = case application:get_env(rabbit, config_entry_decoder) of
undefined ->
[];
diff --git a/src/rabbit_quorum_queue.erl b/src/rabbit_quorum_queue.erl
index f83ad11b50..8a6d7eee5b 100644
--- a/src/rabbit_quorum_queue.erl
+++ b/src/rabbit_quorum_queue.erl
@@ -113,21 +113,36 @@ declare(Q) when ?amqqueue_is_quorum(Q) ->
case rabbit_amqqueue:internal_declare(NewQ1, false) of
{created, NewQ} ->
RaMachine = ra_machine(NewQ),
- case ra:start_cluster(RaName, RaMachine,
- [{RaName, Node} || Node <- Nodes]) of
+ ServerIds = [{RaName, Node} || Node <- Nodes],
+ ClusterName = RaName,
+ RaConfs = [begin
+ UId = ra:new_uid(ra_lib:to_binary(ClusterName)),
+ FName = rabbit_misc:rs(QName),
+ #{cluster_name => ClusterName,
+ id => ServerId,
+ uid => UId,
+ friendly_name => FName,
+ initial_members => ServerIds,
+ log_init_args => #{uid => UId},
+ machine => RaMachine}
+ end || ServerId <- ServerIds],
+
+ case ra:start_cluster(RaConfs) of
{ok, _, _} ->
rabbit_event:notify(queue_created,
[{name, QName},
{durable, Durable},
{auto_delete, AutoDelete},
{arguments, Arguments},
- {user_who_performed_action, ActingUser}]),
+ {user_who_performed_action,
+ ActingUser}]),
{new, NewQ};
{error, Error} ->
_ = rabbit_amqqueue:internal_delete(QName, ActingUser),
- rabbit_misc:protocol_error(internal_error,
- "Cannot declare a queue '~s' on node '~s': ~255p",
- [rabbit_misc:rs(QName), node(), Error])
+ rabbit_misc:protocol_error(
+ internal_error,
+ "Cannot declare a queue '~s' on node '~s': ~255p",
+ [rabbit_misc:rs(QName), node(), Error])
end;
{existing, _} = Ex ->
Ex