You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.0 KiB
54 lines
2.0 KiB
7 years ago
|
From 279bae7ec9a571a4d52b0d876850e27772eb0933 Mon Sep 17 00:00:00 2001
|
||
|
From: Jiri Stransky <jistr@redhat.com>
|
||
|
Date: Thu, 23 Jun 2016 12:55:06 +0200
|
||
|
Subject: [PATCH] RabbitMQ: Forget node before 2nd joining attempt
|
||
|
|
||
|
If a first attempt at joining an existing cluster has failed and we
|
||
|
resort to wiping the local RabbitMQ data, make sure we also request the
|
||
|
local node to be forgotten from the existing cluster before we make the
|
||
|
join attempt, otherwise the node will be rejected.
|
||
|
---
|
||
|
heartbeat/rabbitmq-cluster | 19 +++++++++++++++++++
|
||
|
1 file changed, 19 insertions(+)
|
||
|
|
||
|
diff --git a/heartbeat/rabbitmq-cluster b/heartbeat/rabbitmq-cluster
|
||
|
index 0724901..b9ae38e 100755
|
||
|
--- a/heartbeat/rabbitmq-cluster
|
||
|
+++ b/heartbeat/rabbitmq-cluster
|
||
|
@@ -279,6 +279,22 @@ rmq_join_existing()
|
||
|
return $OCF_SUCCESS
|
||
|
}
|
||
|
|
||
|
+rmq_forget_cluster_node_remotely() {
|
||
|
+ local running_cluster_nodes="$1"
|
||
|
+ local node_to_forget="$2"
|
||
|
+
|
||
|
+ ocf_log info "Forgetting $node_to_forget via nodes [ $(echo $running_cluster_nodes | tr '\n' ' ') ]."
|
||
|
+ for running_cluster_node in $running_cluster_nodes; do
|
||
|
+ rabbitmqctl -n $running_cluster_node forget_cluster_node $node_to_forget
|
||
|
+ if [ $? = 0 ]; then
|
||
|
+ ocf_log info "Succeeded forgetting $node_to_forget via $running_cluster_node."
|
||
|
+ return
|
||
|
+ else
|
||
|
+ ocf_log err "Failed to forget node $node_to_forget via $running_cluster_node."
|
||
|
+ fi
|
||
|
+ done
|
||
|
+}
|
||
|
+
|
||
|
rmq_notify() {
|
||
|
node_list="${OCF_RESKEY_CRM_meta_notify_stop_uname}"
|
||
|
mode="${OCF_RESKEY_CRM_meta_notify_type}-${OCF_RESKEY_CRM_meta_notify_operation}"
|
||
|
@@ -336,9 +352,12 @@ rmq_start() {
|
||
|
rmq_join_existing "$join_list"
|
||
|
if [ $? -ne 0 ]; then
|
||
|
ocf_log info "node failed to join, wiping data directory and trying again"
|
||
|
+ local local_rmq_node="$(${HA_SBIN_DIR}/crm_attribute -N $NODENAME -l forever --query --name $RMQ_CRM_ATTR_COOKIE_LAST_KNOWN -q)"
|
||
|
+
|
||
|
# if the graceful join fails, use the hammer and reset all the data.
|
||
|
rmq_stop
|
||
|
rmq_wipe_data
|
||
|
+ rmq_forget_cluster_node_remotely "$join_list" "$local_rmq_node"
|
||
|
rmq_join_existing "$join_list"
|
||
|
rc=$?
|
||
|
|