* [PATCH 1/2] crm-fence-peer.9.sh: fix parsing in_ccm crmd fields of node_state with Pacemaker 2.1.7
@ 2024-03-03 9:12 Su Yue
2024-03-03 9:12 ` [PATCH 2/2] crm-fence-peer.9.sh: use join of node_state to judge whether node is banned Su Yue
0 siblings, 1 reply; 6+ messages in thread
From: Su Yue @ 2024-03-03 9:12 UTC (permalink / raw)
To: drbd-dev; +Cc: lars.ellenberg
From: Su Yue <glass.su@suse.com>
If pacemaker version < 2.1.7, in_ccm of node_state is "true" or "false"
and crmd is "online" or "offline".
pacemaker 2.1.7 changed the two fields into timestamps.
For in_ccm, the value is timestamp since when node has been a cluster
member("true"). A value 0 of means the node is not a cluster member("false").
For crmd, the value is timestamp since when peer has been online in
CPG("online"). A value 0 means the peer is offline in CPG("offline").
The original code doesn't handle these fields in timestamp format.
Since there are many comprare of strings in context, converting in_ccm and crmd
from timestamps/0 to old strings is simpler and clearer.
Link: https://github.com/ClusterLabs/pacemaker/blob/Pacemaker-2.1.7/lib/pengine/unpack.c#L1581
Signed-off-by: Su Yue <glass.su@suse.com>
---
scripts/crm-fence-peer.9.sh | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/scripts/crm-fence-peer.9.sh b/scripts/crm-fence-peer.9.sh
index 44da6516bf3f..a3353a7354a6 100755
--- a/scripts/crm-fence-peer.9.sh
+++ b/scripts/crm-fence-peer.9.sh
@@ -888,6 +888,31 @@ guess_if_pacemaker_will_fence()
esac
done
+ # Copied from pacemaker-2.1.7:lib/pengine/unpack.c:
+ # Since crm_feature_set 3.18.0 (pacemaker-2.1.7):
+ #
+ # - in_ccm ::= <timestamp>|0
+ # Since when node has been a cluster member. A value 0 of means the
+ # node is not a cluster member.
+ # - crmd ::= <timestamp>|0
+ # Since when peer has been online in CPG. A value 0 means the peer
+ # is offline in CPG.
+ if [[ $in_ccm =~ ^[0-9]+$ ]]; then
+ if [[ $in_ccm = "0" ]]; then
+ in_ccm="false"
+ else
+ in_ccm="true"
+ fi
+ fi
+
+ if [[ $crmd =~ ^[0-9]+$ ]]; then
+ if [[ $crmd = "0" ]]; then
+ crmd="offline"
+ else
+ crmd="online"
+ fi
+ fi
+
# if it is not enabled, no point in waiting for it.
if ! $stonith_enabled ; then
# "normalize" the rest of the logic
--
2.44.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] crm-fence-peer.9.sh: use join of node_state to judge whether node is banned
2024-03-03 9:12 [PATCH 1/2] crm-fence-peer.9.sh: fix parsing in_ccm crmd fields of node_state with Pacemaker 2.1.7 Su Yue
@ 2024-03-03 9:12 ` Su Yue
2024-03-07 2:54 ` Su Yue
0 siblings, 1 reply; 6+ messages in thread
From: Su Yue @ 2024-03-03 9:12 UTC (permalink / raw)
To: drbd-dev; +Cc: lars.ellenberg
From: Su Yue <glass.su@suse.com>
crmd in node_state can't be "banned". join should be used instead
of crmd.
Signed-off-by: Su Yue <glass.su@suse.com>
---
scripts/crm-fence-peer.9.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/crm-fence-peer.9.sh b/scripts/crm-fence-peer.9.sh
index a3353a7354a6..b326a1656c15 100755
--- a/scripts/crm-fence-peer.9.sh
+++ b/scripts/crm-fence-peer.9.sh
@@ -934,7 +934,7 @@ guess_if_pacemaker_will_fence()
# for further inspiration, see pacemaker:lib/pengine/unpack.c, determine_online_status_fencing()
[[ -z $in_ccm ]] && will_fence=true
- [[ $crmd = "banned" ]] && will_fence=true
+ [[ $join = "banned" ]] && will_fence=true
if [[ ${expected-down} = "down" && $in_ccm = "false" && $crmd != "online" ]]; then
: "pacemaker considers this as clean down"
elif [[ $in_ccm = false ]] || [[ $crmd != "online" ]]; then
--
2.44.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] crm-fence-peer.9.sh: use join of node_state to judge whether node is banned
2024-03-03 9:12 ` [PATCH 2/2] crm-fence-peer.9.sh: use join of node_state to judge whether node is banned Su Yue
@ 2024-03-07 2:54 ` Su Yue
2024-03-14 3:18 ` Su Yue
0 siblings, 1 reply; 6+ messages in thread
From: Su Yue @ 2024-03-07 2:54 UTC (permalink / raw)
To: drbd-dev; +Cc: lars.ellenberg
Hi, dear drbd folks
Would you help review the patches for drbd-utils? Many thanks!
—
Su
> On Mar 3, 2024, at 17:12, Su Yue <glass.su@suse.com> wrote:
>
> From: Su Yue <glass.su@suse.com>
>
> crmd in node_state can't be "banned". join should be used instead
> of crmd.
>
> Signed-off-by: Su Yue <glass.su@suse.com>
> ---
> scripts/crm-fence-peer.9.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/crm-fence-peer.9.sh b/scripts/crm-fence-peer.9.sh
> index a3353a7354a6..b326a1656c15 100755
> --- a/scripts/crm-fence-peer.9.sh
> +++ b/scripts/crm-fence-peer.9.sh
> @@ -934,7 +934,7 @@ guess_if_pacemaker_will_fence()
>
> # for further inspiration, see pacemaker:lib/pengine/unpack.c, determine_online_status_fencing()
> [[ -z $in_ccm ]] && will_fence=true
> - [[ $crmd = "banned" ]] && will_fence=true
> + [[ $join = "banned" ]] && will_fence=true
> if [[ ${expected-down} = "down" && $in_ccm = "false" && $crmd != "online" ]]; then
> : "pacemaker considers this as clean down"
> elif [[ $in_ccm = false ]] || [[ $crmd != "online" ]]; then
> --
> 2.44.0
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] crm-fence-peer.9.sh: use join of node_state to judge whether node is banned
2024-03-07 2:54 ` Su Yue
@ 2024-03-14 3:18 ` Su Yue
2024-04-17 9:57 ` Lars Ellenberg
0 siblings, 1 reply; 6+ messages in thread
From: Su Yue @ 2024-03-14 3:18 UTC (permalink / raw)
To: drbd-dev; +Cc: lars.ellenberg, philipp.reisner
> On Mar 7, 2024, at 10:54, Su Yue <glass.su@suse.com> wrote:
>
> Hi, dear drbd folks
> Would you help review the patches for drbd-utils? Many thanks!
>
Gentle ping.
—
Su
> —
> Su
>
>> On Mar 3, 2024, at 17:12, Su Yue <glass.su@suse.com> wrote:
>>
>> From: Su Yue <glass.su@suse.com>
>>
>> crmd in node_state can't be "banned". join should be used instead
>> of crmd.
>>
>> Signed-off-by: Su Yue <glass.su@suse.com>
>> ---
>> scripts/crm-fence-peer.9.sh | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/scripts/crm-fence-peer.9.sh b/scripts/crm-fence-peer.9.sh
>> index a3353a7354a6..b326a1656c15 100755
>> --- a/scripts/crm-fence-peer.9.sh
>> +++ b/scripts/crm-fence-peer.9.sh
>> @@ -934,7 +934,7 @@ guess_if_pacemaker_will_fence()
>>
>> # for further inspiration, see pacemaker:lib/pengine/unpack.c, determine_online_status_fencing()
>> [[ -z $in_ccm ]] && will_fence=true
>> - [[ $crmd = "banned" ]] && will_fence=true
>> + [[ $join = "banned" ]] && will_fence=true
>> if [[ ${expected-down} = "down" && $in_ccm = "false" && $crmd != "online" ]]; then
>> : "pacemaker considers this as clean down"
>> elif [[ $in_ccm = false ]] || [[ $crmd != "online" ]]; then
>> --
>> 2.44.0
>>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] crm-fence-peer.9.sh: use join of node_state to judge whether node is banned
2024-03-14 3:18 ` Su Yue
@ 2024-04-17 9:57 ` Lars Ellenberg
2024-04-17 10:47 ` Glass Su
0 siblings, 1 reply; 6+ messages in thread
From: Lars Ellenberg @ 2024-04-17 9:57 UTC (permalink / raw)
To: Su Yue; +Cc: philipp.reisner, drbd-dev
On Thu, Mar 14, 2024 at 11:18:22AM +0800, Su Yue wrote:
>
>
> > On Mar 7, 2024, at 10:54, Su Yue <glass.su@suse.com> wrote:
> >
> > Hi, dear drbd folks
> > Would you help review the patches for drbd-utils? Many thanks!
> >
> Gentle ping.
So you apparently have some kind of test suite
excercising this fencing handler?
Thank you for making us aware, and for your patience.
Looks plausible.
Lars
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] crm-fence-peer.9.sh: use join of node_state to judge whether node is banned
2024-04-17 9:57 ` Lars Ellenberg
@ 2024-04-17 10:47 ` Glass Su
0 siblings, 0 replies; 6+ messages in thread
From: Glass Su @ 2024-04-17 10:47 UTC (permalink / raw)
To: Lars Ellenberg; +Cc: philipp.reisner, drbd-dev
> On Apr 17, 2024, at 17:57, Lars Ellenberg <lars.ellenberg@linbit.com> wrote:
>
> On Thu, Mar 14, 2024 at 11:18:22AM +0800, Su Yue wrote:
>>
>>
>>> On Mar 7, 2024, at 10:54, Su Yue <glass.su@suse.com> wrote:
>>>
>>> Hi, dear drbd folks
>>> Would you help review the patches for drbd-utils? Many thanks!
>>>
>> Gentle ping.
>
> So you apparently have some kind of test suite
> excercising this fencing handler?
>
Yes. SUSE does have internal tests for drbd in HA environment.
The issue of patch1 was exposed with pacemaker-2.1.7 in SLES-15SP6.
Patch2 was filed during debug process of the above issue. It looks like a
small mistake when the judgement was introduced.
And the patches survived in our test scenarios.
Thanks,
Su
> Thank you for making us aware, and for your patience.
> Looks plausible.
>
> Lars
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-04-17 10:48 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-03 9:12 [PATCH 1/2] crm-fence-peer.9.sh: fix parsing in_ccm crmd fields of node_state with Pacemaker 2.1.7 Su Yue
2024-03-03 9:12 ` [PATCH 2/2] crm-fence-peer.9.sh: use join of node_state to judge whether node is banned Su Yue
2024-03-07 2:54 ` Su Yue
2024-03-14 3:18 ` Su Yue
2024-04-17 9:57 ` Lars Ellenberg
2024-04-17 10:47 ` Glass Su
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox