diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit.erl | 2 | ||||
| -rw-r--r-- | src/rabbit_quorum_queue.erl | 27 |
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 |
