From 984cb0a7543e3b78f8e7e5b3ef33bc3bd3ce690a Mon Sep 17 00:00:00 2001
From: Sven Kieske <kieske@osism.tech>
Date: Fri, 19 Apr 2024 17:17:28 +0200
Subject: [PATCH] mariadb: fix cluster recovery

sometimes cluster recovery didn't work
because we only look for the sequence number in the last 200 lines
of the log file.

fix this by ingesting the complete file and only register the last
sequence number we find.

Closes-Bug: 1821173

Change-Id: Iea2661c9d5d262cf99edd5f5b567f252607a0003
Signed-off-by: Sven Kieske <kieske@osism.tech>
---
 ansible/roles/mariadb/tasks/recover_cluster.yml           | 2 +-
 .../fix_mariadb_cluster_recovery-1a48db23cb99d4c0.yaml    | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)
 create mode 100644 releasenotes/notes/fix_mariadb_cluster_recovery-1a48db23cb99d4c0.yaml

diff --git a/ansible/roles/mariadb/tasks/recover_cluster.yml b/ansible/roles/mariadb/tasks/recover_cluster.yml
index 0c36e42fa8..88324d54b5 100644
--- a/ansible/roles/mariadb/tasks/recover_cluster.yml
+++ b/ansible/roles/mariadb/tasks/recover_cluster.yml
@@ -49,7 +49,7 @@
     # WSREP: Recovered position: <UUID>:<seqno>.
     - name: Get MariaDB wsrep recovery seqno
       become: true
-      shell: tail -n 200 /tmp/mariadb_tmp.log | awk -F" " '$0~/Recovered position/{print $NF;exit;}' | awk -F":" '{print $2}'
+      shell: awk -F" " '/Recovered position/{seqno=$NF} END{split(seqno, a, ":"); print a[2]}' /tmp/mariadb_tmp.log
       register: wsrep_recovery_seqno
 
     - name: Removing MariaDB log file from /tmp
diff --git a/releasenotes/notes/fix_mariadb_cluster_recovery-1a48db23cb99d4c0.yaml b/releasenotes/notes/fix_mariadb_cluster_recovery-1a48db23cb99d4c0.yaml
new file mode 100644
index 0000000000..1775a99afc
--- /dev/null
+++ b/releasenotes/notes/fix_mariadb_cluster_recovery-1a48db23cb99d4c0.yaml
@@ -0,0 +1,8 @@
+---
+fixes:
+  - |
+    Fixed an issue where the MariaDB Cluster recovery process would fail if the
+    sequence number was not found in the logs. The recovery process now checks
+    the complete log file for the sequence number and recovers the cluster.
+    See `LP#1821173 <https://bugs.launchpad.net/kolla-ansible/+bug/1821173>`__
+    for details.
-- 
GitLab