- db2: do not use db2stop to avoid divergence in the log
Resolves: RHEL-148198
This commit is contained in:
parent
ee02a536d4
commit
96828dcefe
32
RHEL-148198-1-db2-fix-bashism.patch
Normal file
32
RHEL-148198-1-db2-fix-bashism.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 3712b1f52bccddc767ad6f16ec67d6c8c29f1f71 Mon Sep 17 00:00:00 2001
|
||||
From: Valentin Vidic <vvidic@valentin-vidic.from.hr>
|
||||
Date: Sun, 3 Apr 2022 20:39:01 +0200
|
||||
Subject: [PATCH] db2: fix bashism
|
||||
|
||||
dash only allows -a as AND operator.
|
||||
---
|
||||
heartbeat/db2 | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/db2 b/heartbeat/db2
|
||||
index ea24d33fc8..4a4b2f477f 100755
|
||||
--- a/heartbeat/db2
|
||||
+++ b/heartbeat/db2
|
||||
@@ -407,7 +407,7 @@ db2_start() {
|
||||
# partition is explicitly specified, activate without
|
||||
# partition information. This allows db2 instances without
|
||||
# partition support to be managed.
|
||||
- if [ -z "$OCF_RESKEY_dbpartitionnum" ] && ! [ -a "$db2sql/db2nodes.cfg" ]; then
|
||||
+ if [ -z "$OCF_RESKEY_dbpartitionnum" ] && ! [ -e "$db2sql/db2nodes.cfg" ]; then
|
||||
start_opts=""
|
||||
fi
|
||||
|
||||
@@ -511,7 +511,7 @@ db2_stop_bg() {
|
||||
|
||||
rc=$OCF_SUCCESS
|
||||
|
||||
- if [ -z "$OCF_RESKEY_dbpartitionnum" ] && ! [ -a "$db2sql/db2nodes.cfg" ]; then
|
||||
+ if [ -z "$OCF_RESKEY_dbpartitionnum" ] && ! [ -e "$db2sql/db2nodes.cfg" ]; then
|
||||
stop_opts=""
|
||||
fi
|
||||
|
||||
@ -0,0 +1,143 @@
|
||||
From 26c0d48bc69da1859f1ce5205a8bb6eaf6297b81 Mon Sep 17 00:00:00 2001
|
||||
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||||
Date: Wed, 25 Mar 2026 10:46:09 +0100
|
||||
Subject: [PATCH] db2: do not use db2stop, as it sends truncation messages,
|
||||
which in some cases are not delivered
|
||||
|
||||
This caused divergence in the log, and the user would have to manually rebuild
|
||||
the DB to recover from it.
|
||||
---
|
||||
heartbeat/db2 | 104 +++++++-------------------------------------------
|
||||
1 file changed, 13 insertions(+), 91 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/db2 b/heartbeat/db2
|
||||
index 4420b9989..9de18639d 100755
|
||||
--- a/heartbeat/db2
|
||||
+++ b/heartbeat/db2
|
||||
@@ -596,45 +596,10 @@ db2_start() {
|
||||
return $OCF_SUCCESS
|
||||
}
|
||||
|
||||
-#
|
||||
-# helper function to be spawned
|
||||
-# so we can detect a hang of the db2stop command
|
||||
-#
|
||||
-db2_stop_bg() {
|
||||
- local rc output
|
||||
- local stop_opts="dbpartitionnum $db2node"
|
||||
-
|
||||
- rc=$OCF_SUCCESS
|
||||
-
|
||||
- if [ -z "$OCF_RESKEY_dbpartitionnum" ] && ! [ -e "$db2sql/db2nodes.cfg" ]; then
|
||||
- stop_opts=""
|
||||
- fi
|
||||
-
|
||||
- if output=$(runasdb2 db2stop force $stop_opts)
|
||||
- then
|
||||
- ocf_log info "DB2 instance $instance($db2node) stopped: $output"
|
||||
- else
|
||||
- case $output in
|
||||
- *SQL1032N*)
|
||||
- #SQL1032N No start database manager command was issued
|
||||
- ocf_log info "$output"
|
||||
- ;;
|
||||
-
|
||||
- *)
|
||||
- ocf_log err "DB2 instance $instance($db2node) stop failed: $output"
|
||||
- rc=$OCF_ERR_GENERIC
|
||||
- esac
|
||||
- fi
|
||||
-
|
||||
- return $rc
|
||||
-}
|
||||
-
|
||||
#
|
||||
# Stop the given db2 database instance
|
||||
#
|
||||
db2_stop() {
|
||||
- local stop_timeout grace_timeout stop_bg_pid i must_kill
|
||||
-
|
||||
# remove master score
|
||||
master_score -D -l reboot
|
||||
|
||||
@@ -647,67 +612,24 @@ db2_stop() {
|
||||
return $OCF_SUCCESS
|
||||
fi
|
||||
|
||||
- stop_timeout=${OCF_RESKEY_CRM_meta_timeout:-20000}
|
||||
-
|
||||
- # grace_time is 4/5 (unit is ms)
|
||||
- grace_timeout=$((stop_timeout/1250))
|
||||
-
|
||||
- # start db2stop in background as this may hang
|
||||
- db2_stop_bg &
|
||||
- stop_bg_pid=$!
|
||||
-
|
||||
- # wait for grace_timeout
|
||||
- i=0
|
||||
- while [ $i -lt $grace_timeout ]
|
||||
- do
|
||||
- kill -0 $stop_bg_pid 2>/dev/null || break;
|
||||
- sleep 1
|
||||
- i=$((i+1))
|
||||
- done
|
||||
-
|
||||
- # collect exit status but don't hang
|
||||
- if kill -0 $stop_bg_pid 2>/dev/null
|
||||
- then
|
||||
- stoprc=1
|
||||
- kill -9 $stop_bg_pid 2>/dev/null
|
||||
- else
|
||||
- wait $stop_bg_pid
|
||||
- stoprc=$?
|
||||
- fi
|
||||
-
|
||||
- must_kill=0
|
||||
-
|
||||
- if [ $stoprc -ne 0 ]
|
||||
+ # db2nkill kills *all* partitions on the node
|
||||
+ if [ -x $db2bin/db2nkill ]
|
||||
then
|
||||
- ocf_log warn "DB2 instance $instance($db2node): db2stop failed, using db2nkill"
|
||||
- must_kill=1
|
||||
- elif ! db2_instance_dead
|
||||
+ logasdb2 $db2bin/db2nkill $db2node
|
||||
+ elif [ -x $db2bin/db2_kill ]
|
||||
then
|
||||
- ocf_log warn "DB2 instance $instance($db2node): db2stop indicated success but there a still processes, using db2nkill"
|
||||
- must_kill=1
|
||||
+ logasdb2 $db2bin/db2_kill
|
||||
fi
|
||||
|
||||
- if [ $must_kill -eq 1 ]
|
||||
- then
|
||||
- # db2nkill kills *all* partitions on the node
|
||||
- if [ -x $db2bin/db2nkill ]
|
||||
- then
|
||||
- logasdb2 $db2bin/db2nkill $db2node
|
||||
- elif [ -x $db2bin/db2_kill ]
|
||||
- then
|
||||
- logasdb2 $db2bin/db2_kill
|
||||
- fi
|
||||
-
|
||||
- # loop forever (or lrmd kills us due to timeout) until the
|
||||
- # instance is dead
|
||||
- while ! db2_instance_dead
|
||||
- do
|
||||
- ocf_log info "DB2 instance $instance($db2node): waiting for processes to exit"
|
||||
- sleep 1
|
||||
- done
|
||||
+ # loop forever (or lrmd kills us due to timeout) until the
|
||||
+ # instance is dead
|
||||
+ while ! db2_instance_dead
|
||||
+ do
|
||||
+ ocf_log info "DB2 instance $instance($db2node): waiting for processes to exit"
|
||||
+ sleep 1
|
||||
+ done
|
||||
|
||||
- ocf_log info "DB2 instance $instance($db2node) is now dead"
|
||||
- fi
|
||||
+ ocf_log info "DB2 instance $instance($db2node) is now dead"
|
||||
|
||||
return $OCF_SUCCESS
|
||||
}
|
||||
@ -45,7 +45,7 @@
|
||||
Name: resource-agents
|
||||
Summary: Open Source HA Reusable Cluster Resource Scripts
|
||||
Version: 4.10.0
|
||||
Release: 111%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist}
|
||||
Release: 112%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist}
|
||||
License: GPLv2+ and LGPLv2+
|
||||
URL: https://github.com/ClusterLabs/resource-agents
|
||||
Source0: %{upstream_prefix}-%{upstream_version}.tar.gz
|
||||
@ -204,6 +204,8 @@ Patch151: RHEL-156709-podman-etcd-ignore-learners-when-considering-which-node-ha
|
||||
Patch152: RHEL-157146-podman-etcd-handle-existing-peer-URLs-gracefully-during-force_new_cluster-recovery.patch
|
||||
Patch153: RHEL-153158-db2-set-reintegration-when-promotion-is-successful.patch
|
||||
Patch154: RHEL-159203-podman-etcd-hardened-monitor-stop-actions.patch
|
||||
Patch155: RHEL-148198-1-db2-fix-bashism.patch
|
||||
Patch156: RHEL-148198-2-db2-do-not-use-db2stop-to-avoid-divergence-in-the-log.patch
|
||||
|
||||
# bundled ha-cloud-support libs
|
||||
Patch500: ha-cloud-support-aliyun.patch
|
||||
@ -503,6 +505,8 @@ exit 1
|
||||
%patch -p1 -P 152
|
||||
%patch -p1 -P 153
|
||||
%patch -p1 -P 154
|
||||
%patch -p1 -P 155
|
||||
%patch -p1 -P 156
|
||||
|
||||
# bundled ha-cloud-support libs
|
||||
%patch -p1 -P 500
|
||||
@ -835,6 +839,11 @@ rm -rf %{buildroot}/usr/share/doc/resource-agents
|
||||
%{_usr}/lib/ocf/lib/heartbeat/OCF_*.pm
|
||||
|
||||
%changelog
|
||||
* Fri Apr 10 2026 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.10.0-112
|
||||
- db2: do not use db2stop to avoid divergence in the log
|
||||
|
||||
Resolves: RHEL-148198
|
||||
|
||||
* Fri Mar 27 2026 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.10.0-111
|
||||
- podman-etcd: hardened monitor/stop actions
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user