forked from pool/drbd-utils
- bsc#1209783: crm-fence-peer incompatible with Pacemaker 2.1 and need backport 854a5f6 and 8a28be7 OBS-URL: https://build.opensuse.org/request/show/1074734 OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd-utils?expand=0&rev=127
91 lines
3.4 KiB
Diff
91 lines
3.4 KiB
Diff
From 68d1e4242f165917bc2c787d9df0fe41251e05e6 Mon Sep 17 00:00:00 2001
|
|
From: Lars Ellenberg <lars.ellenberg@linbit.com>
|
|
Date: Wed, 12 Jan 2022 13:50:35 +0100
|
|
Subject: [PATCH] crm-fence-peer: fix timeout with Pacemaker 2.0.5: milli
|
|
seconds vs seconds
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Addendum to 8a28be74bc6efa93931c957e54c01abb18b984fe
|
|
Commit message of the above cited here:
|
|
|
|
> crmadmin timeout was in milli seconds for <= 2.0.x,
|
|
> but became a TIMESPEC with default seconds in >= 2.1.
|
|
>
|
|
> Up to 2.0.4, atoi() was used, which effectively ignores "trailing garbage",
|
|
> so we could get away with always appending "ms".
|
|
> But with 2.0.5, it became g_option_context_parse G_OPTION_ARG_INT, which
|
|
> "Cannot parse integer value “200ms” for --timeout" :-|
|
|
>
|
|
> So grep the help message for "timeout.*milliseconds",
|
|
> and if not present, append an explicit "ms" unit.
|
|
|
|
And this is where I got it wrong :-(
|
|
somewhere later they re-organised the help text
|
|
so now I would need to parse --help-all.
|
|
|
|
Instead try to actually call "crmadmin -t 100ms --version".
|
|
If that works, it apparently understands (or ignores)
|
|
the "ms" unit.
|
|
---
|
|
scripts/crm-fence-peer.9.sh | 14 +++++++++++---
|
|
scripts/crm-fence-peer.sh | 14 +++++++++++---
|
|
2 files changed, 22 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/scripts/crm-fence-peer.9.sh b/scripts/crm-fence-peer.9.sh
|
|
index c943bf9f..fc8d2bc3 100755
|
|
--- a/scripts/crm-fence-peer.9.sh
|
|
+++ b/scripts/crm-fence-peer.9.sh
|
|
@@ -400,10 +400,18 @@ setup_crm_timeout_unit_ms()
|
|
# garbage", so we could get away with always appending "ms", but with
|
|
# 2.0.5, it became g_option_context_parse G_OPTION_ARG_INT, which
|
|
# "Cannot parse integer value “200ms” for --timeout" :-|
|
|
- if crmadmin --help 2>&1 | grep -q -e "--timeout=.*in milliseconds"; then
|
|
- crm_timeout_unit_ms=""
|
|
- else
|
|
+ # Can not parse the help text reliably, because they changed content
|
|
+ # and organisation of the help text between 2.0.4 and 2.0.5.
|
|
+ # Just try using ms unit, and see if it fails.
|
|
+ if crmadmin -t 100ms --version &> /dev/null; then
|
|
+ # this is either a recent version that actually understands ms
|
|
+ # as part of the TIMESPEC, or a version that still uses atoi().
|
|
crm_timeout_unit_ms="ms"
|
|
+ else
|
|
+ # this one likely failed with
|
|
+ # crmadmin: Cannot parse integer value “100ms” for -t
|
|
+ # (>= 2.0.5, < 2.1)
|
|
+ crm_timeout_unit_ms=""
|
|
fi
|
|
}
|
|
|
|
diff --git a/scripts/crm-fence-peer.sh b/scripts/crm-fence-peer.sh
|
|
index 96786734..b0e4e0f1 100755
|
|
--- a/scripts/crm-fence-peer.sh
|
|
+++ b/scripts/crm-fence-peer.sh
|
|
@@ -252,10 +252,18 @@ setup_crm_timeout_unit_ms()
|
|
# garbage", so we could get away with always appending "ms", but with
|
|
# 2.0.5, it became g_option_context_parse G_OPTION_ARG_INT, which
|
|
# "Cannot parse integer value “200ms” for --timeout" :-|
|
|
- if crmadmin --help 2>&1 | grep -q -e "--timeout=.*in milliseconds"; then
|
|
- crm_timeout_unit_ms=""
|
|
- else
|
|
+ # Can not parse the help text reliably, because they changed content
|
|
+ # and organisation of the help text between 2.0.4 and 2.0.5.
|
|
+ # Just try using ms unit, and see if it fails.
|
|
+ if crmadmin -t 100ms --version &> /dev/null; then
|
|
+ # this is either a recent version that actually understands ms
|
|
+ # as part of the TIMESPEC, or a version that still uses atoi().
|
|
crm_timeout_unit_ms="ms"
|
|
+ else
|
|
+ # this one likely failed with
|
|
+ # crmadmin: Cannot parse integer value “100ms” for -t
|
|
+ # (>= 2.0.5, < 2.1)
|
|
+ crm_timeout_unit_ms=""
|
|
fi
|
|
}
|
|
|
|
--
|
|
2.40.0
|
|
|