summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2020-06-25 17:59:08 +0300
committerMichael Klishin <michael@clojurewerkz.org>2020-07-14 03:50:31 +0300
commit02d001bff7815ffa4bef4595e1b8cac38ee0d159 (patch)
treecf8542d5f88182ac4c30595657ebefdb25040b4f /src
parent235567e7d51ee40250860cd539d024895fb3dd56 (diff)
downloadrabbitmq-server-git-02d001bff7815ffa4bef4595e1b8cac38ee0d159.tar.gz
Correctly compute local QQ replica/Ra server name when reviving
Part of rabbitmq/rabbitmq-server#2312 Pair: @kjnilsson
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_maintenance.erl14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/rabbit_maintenance.erl b/src/rabbit_maintenance.erl
index 817d65479d..6636998c61 100644
--- a/src/rabbit_maintenance.erl
+++ b/src/rabbit_maintenance.erl
@@ -43,6 +43,7 @@
%% API
%%
+-spec drain() -> ok.
drain() ->
rabbit_log:alert("This node is being put into maintenance (drain) mode"),
mark_as_being_drained(),
@@ -62,6 +63,7 @@ drain() ->
ok.
+-spec revive() -> ok.
revive() ->
rabbit_log:alert("This node is being revived from maintenance (drain) mode"),
revive_local_quorum_queue_replicas(),
@@ -233,17 +235,17 @@ revive_local_quorum_queue_replicas() ->
Queues = rabbit_amqqueue:list_local_followers(),
[begin
Name = amqqueue:get_name(Q),
- RaLeader = amqqueue:get_pid(Q),
rabbit_log:debug("Will trigger a leader election for local quorum queue ~s",
[rabbit_misc:rs(Name)]),
%% start local QQ replica (Ra server) of this queue
- RaLeader = amqqueue:get_pid(Q),
- rabbit_log:debug("Will start Ra server ~p", [RaLeader]),
- case ra:restart_server(RaLeader) of
+ {Prefix, _Node} = amqqueue:get_pid(Q),
+ RaServer = {Prefix, node()},
+ rabbit_log:debug("Will start Ra server ~p", [RaServer]),
+ case ra:restart_server(RaServer) of
ok ->
- rabbit_log:debug("Successfully restarted Ra server ~p", [RaLeader]);
+ rabbit_log:debug("Successfully restarted Ra server ~p", [RaServer]);
{error, {already_started, _Pid}} ->
- rabbit_log:debug("Ra server ~p is already running", [RaLeader]);
+ rabbit_log:debug("Ra server ~p is already running", [RaServer]);
{error, nodedown} ->
rabbit_log:error("Failed to restart Ra server ~p: target node was reported as down")
end