openstack-armada-app/openstack-helm-infra/files/0019-Add-force_boot-command-to-rabbit-start-template.patch
Maik Catrinque 9892254209 Enable rabbitmq force_boot command
This change sets the rabbit forceBoot flag to true through
the manifest to enable the force_boot command on the RabbitMQ
start script template. Also, add a new condition to the patch
file to use the force_boot command only on the first RabbitMQ
node to boot.

Test plan:
PASS: Shutdown and start a multi-node RabbitMQ cluster
PASS: Build stx-openstack with the change

Regression:
PASS: OpenStack can be applied successfully
PASS: RabbitMQ nodes can join the RabbitMQ cluster

Story: 2009784
Task: 44290

Relates-to: https://review.opendev.org/c/starlingx/openstack-armada-app/+/826516

Signed-off-by: Maik Catrinque
<maik.wandercatrinqueandrade@windriver.com>
Change-Id: Ibd59526eafe941955e06b3141481eaf7c61a04c0
2022-02-04 16:35:54 -03:00

66 lines
2.2 KiB
Diff

From a0206d9626323ed4ef57bd4ecc072e3f96aa043a Mon Sep 17 00:00:00 2001
From: Maik Catrinque <maik.wandercatrinqueandrade@windriver.com>
Date: Fri, 14 Jan 2022 15:07:40 -0300
Subject: [PATCH] Add force_boot command to rabbit start template
Currently, if a multi-node cluster is shut down unexpectedly,
RabbitMQ is not able to boot and sync with the other nodes.
The purpose of this change is to add the possibility to use the
rabbitmqctl force_boot command to recover RabbitMQ cluster from
an unexpected shut down.
Test plan:
PASS: Shutdown and start a multi-node RabbitMQ cluster
Regression:
PASS: OpenStack can be applied successfully
PASS: RabbitMQ nodes can join the RabbitMQ cluster
Story: 2009784
Task: 44290
Ref:
[0] https://www.rabbitmq.com/rabbitmqctl.8.html#force_boot
Signed-off-by: Maik Catrinque <maik.wandercatrinqueandrade@windriver.com>
Co-authored-by: Andrew Martins Carletti <Andrew.MartinsCarletti@windriver.com>
Change-Id: I56e966ea64e8881ba436213f0c9e1cbe547098e3
---
rabbitmq/templates/bin/_rabbitmq-start.sh.tpl | 3 +++
rabbitmq/values.yaml | 6 ++++++
4 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/rabbitmq/templates/bin/_rabbitmq-start.sh.tpl b/rabbitmq/templates/bin/_rabbitmq-start.sh.tpl
index 794f0919..4ef849fd 100644
--- a/rabbitmq/templates/bin/_rabbitmq-start.sh.tpl
+++ b/rabbitmq/templates/bin/_rabbitmq-start.sh.tpl
@@ -94,4 +94,7 @@ if ! [ "${POD_INCREMENT}" -eq "0" ] && ! [ -d "/var/lib/rabbitmq/mnesia" ] ; the
rm -fv /tmp/rabbit-disable-readiness /tmp/rabbit-disable-liveness-probe
fi
+{{- if .Values.forceBoot.enabled }}
+if [ "${POD_INCREMENT}" -eq "0" ] && [ -d "/var/lib/rabbitmq/mnesia/${RABBITMQ_NODENAME}" ]; then rabbitmqctl force_boot; fi
+{{- end}}
exec rabbitmq-server
diff --git a/rabbitmq/values.yaml b/rabbitmq/values.yaml
index c593966f..8eb51c64 100644
--- a/rabbitmq/values.yaml
+++ b/rabbitmq/values.yaml
@@ -46,6 +46,12 @@ images:
- dep_check
- image_repo_sync
+# forceBoot: executes 'rabbitmqctl force_boot' to force boot on
+# cluster shut down unexpectedly in an unknown order.
+# ref: https://www.rabbitmq.com/rabbitmqctl.8.html#force_boot
+forceBoot:
+ enabled: false
+
pod:
probes:
prometheus_rabbitmq_exporter:
--
2.25.1