RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1780134 - Adding quorum device requires restart to clear WaitForAll flag
Summary: Adding quorum device requires restart to clear WaitForAll flag
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: corosync
Version: 7.8
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Jan Friesse
QA Contact: cluster-qe@redhat.com
URL:
Whiteboard:
Depends On: 1780137
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-12-05 13:38 UTC by Josef Zimek
Modified: 2023-12-15 17:02 UTC (History)
4 users (show)

Fixed In Version: corosync-2.4.5-5.el7
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1780137 (view as bug list)
Environment:
Last Closed: 2020-09-29 19:55:11 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
votequorum: Ignore the icmap_get_* return value (2.96 KB, patch)
2020-01-21 16:01 UTC, Jan Friesse
no flags Details | Diff
votequorum: Reflect runtime change of 2Node to WFA (2.95 KB, patch)
2020-01-21 16:01 UTC, Jan Friesse
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
Red Hat Knowledge Base (Solution) 4740791 0 None None None 2020-01-17 14:10:48 UTC
Red Hat Product Errata RHBA-2020:3924 0 None None None 2020-09-29 19:55:20 UTC

Description Josef Zimek 2019-12-05 13:38:17 UTC
Description of problem:

Procedure for adding quorum device into pacemaker cluster doesn't require restart according to Red Hat's documentation. However WaitForAll flag is only removed after node is restarted (after adding qdevice):

~~~
# pcs quorum status  #(before adding quorum device - 2 node cluster)
...
Flags:            2Node Quorate WaitForAll
...
# pcs quorum status  #(after adding quorum device - 2 node cluster)
...
Flags:            Quorate WaitForAll Qdevice
...
# pcs quorum status  #(after adding quorum device and restarting whole cluster - 2 node cluster)
...
Flags:            Quorate Qdevice
...
~~~



Version-Release number of selected component (if applicable):

RHEL 7.8 Beta:
~~~
# rpm -qa|grep corosync
corosynclib-2.4.5-4.el7.x86_64
corosync-qnetd-2.4.5-4.el7.x86_64
corosync-2.4.5-4.el7.x86_64
# rpm -qa|grep corosync
corosynclib-2.4.5-4.el7.x86_64
corosync-2.4.5-4.el7.x86_64
corosync-qdevice-2.4.5-4.el7.x86_64



How reproducible:
always

Steps to Reproduce:
1.add qdevice into 2node cluster, make sure qdevice is started
2.check that WaitForAll flag is still present 
3.restart cluster
4.check that WaitForAll flag was removed

Actual results:
* restart is required to clear the WaitForAll flag after adding quorum device

Expected results:
* the WaitForAll flag should be removed automatically after adding quorum device

Additional info:

Relevant documentation doesn't mention necessity to restart:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/high_availability_add-on_reference/s1-quorumdev-haar

https://access.redhat.com/articles/3146431

Comment 4 Jan Friesse 2019-12-06 07:40:31 UTC
I can agree this needs to be fixed. Ideally Corosync should behave same way after adding qdevice as it is after restart.

Comment 5 Jan Friesse 2020-01-21 16:01:06 UTC
Created attachment 1654295 [details]
votequorum: Ignore the icmap_get_* return value

votequorum: Ignore the icmap_get_* return value

Express intention to ignore icmap_get_* return
value and rely on default behavior of not changing the output
parameter on error.

Signed-off-by: Jan Friesse <jfriesse>
(cherry picked from commit cddd62f972bca276c934e58f08da84071cec1ddb)

Comment 6 Jan Friesse 2020-01-21 16:01:21 UTC
Created attachment 1654296 [details]
votequorum: Reflect runtime change of 2Node to WFA

votequorum: Reflect runtime change of 2Node to WFA

When 2Node mode is set, WFA is also set unless WFA is configured
explicitly. This behavior was not reflected on runtime change, so
restarted corosync behavior was different (WFA not set). Also when
cluster is reduced from 3 nodes to 2 nodes during runtime, WFA was not
set, what may result in two quorate partitions.

Solution is to set WFA depending on 2Node when WFA
is not explicitly configured.

Signed-off-by: Jan Friesse <jfriesse>
Reviewed-by: Christine Caulfield <ccaulfie>
(cherry picked from commit 8ce65bf951bc1e5b2d64b60ea027fbdc551d4fc8)

Comment 7 Jan Friesse 2020-01-23 14:57:13 UTC
For QE: Bug reproducer is described in the comment 1. I've tested with just setting two_node: 1 in corosync.conf.

corosync.conf:
...
quorum {
    provider: corosync_votequorum
    two_node: 1
...

# corosync-quorumtool
...
Flags:            2Node WaitForAll 
...

Changing corosync.conf is it doesn't contain two_node:
...
quorum {
    provider: corosync_votequorum
...

# corosync-cfgtool -R
# corosync-quorumtool
...
Flags:
...

Add two_node back:
...
quorum {
    provider: corosync_votequorum
    two_node: 1
...

# corosync-quorumtool
...
Flags:            2Node WaitForAll 
...

Comment 8 Patrik Hagara 2020-02-17 14:35:08 UTC
qa_ack+, repro in description and comment#7

Comment 11 Patrik Hagara 2020-05-26 12:29:28 UTC
before (2.4.5-4.el7)
====================

[root@virt-173 ~]# rpm -q corosync
corosync-2.4.5-4.el7.x86_64
[root@virt-173 ~]# cat /etc/corosync/corosync.conf
<snip>
quorum {
    provider: corosync_votequorum
    two_node: 1
}
<snip>
[root@virt-173 ~]# corosync-quorumtool 
Quorum information
------------------
Date:             Tue May 26 14:23:57 2020
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          1
Ring ID:          1/43
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   2
Highest expected: 2
Total votes:      2
Quorum:           1  
Flags:            2Node Quorate WaitForAll 

Membership information
----------------------
    Nodeid      Votes Name
         1          1 virt-173 (local)
         2          1 virt-175


result: WaitForAll flag not removed on corosync config reload



after (2.4.5-5.el7)
===================

[root@virt-053 ~]# rpm -q corosync
corosync-2.4.5-5.el7.x86_64
[root@virt-053 ~]# corosync-quorumtool 
Quorum information
------------------
Date:             Tue May 26 14:25:38 2020
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          1
Ring ID:          1/43
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   2
Highest expected: 2
Total votes:      2
Quorum:           1  
Flags:            2Node Quorate WaitForAll 

Membership information
----------------------
    Nodeid      Votes Name
         1          1 virt-053 (local)
         2          1 virt-060
[root@virt-053 ~]# sed -i '/two_node/d' /etc/corosync/corosync.conf
[root@virt-053 ~]# corosync-cfgtool -R
Reloading corosync.conf...
Done
[root@virt-053 ~]# corosync-quorumtool 
Quorum information
------------------
Date:             Tue May 26 14:25:59 2020
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          1
Ring ID:          1/43
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   2
Highest expected: 2
Total votes:      2
Quorum:           2  
Flags:            Quorate 

Membership information
----------------------
    Nodeid      Votes Name
         1          1 virt-053 (local)
         2          1 virt-060


result: WaitForAll flag correctly removed on config reload

Comment 12 Patrik Hagara 2020-05-26 12:33:30 UTC
whoops, forgot to paste everything in the "before" section. here's the full reproducer (the "after" section in comment#11 is correct):


before (2.4.5-4.el7)
====================

[root@virt-173 ~]# rpm -q corosync
corosync-2.4.5-4.el7.x86_64
[root@virt-173 ~]# cat /etc/corosync/corosync.conf
<snip>
quorum {
    provider: corosync_votequorum
    two_node: 1
}
<snip>
[root@virt-173 ~]# corosync-quorumtool 
Quorum information
------------------
Date:             Tue May 26 14:23:57 2020
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          1
Ring ID:          1/43
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   2
Highest expected: 2
Total votes:      2
Quorum:           1  
Flags:            2Node Quorate WaitForAll 

Membership information
----------------------
    Nodeid      Votes Name
         1          1 virt-173 (local)
         2          1 virt-175
[root@virt-173 ~]# sed -i '/two_node/d' /etc/corosync/corosync.conf
[root@virt-173 ~]# corosync-cfgtool -R
Reloading corosync.conf...
Done
[root@virt-173 ~]# corosync-quorumtool
Quorum information
------------------
Date:             Tue May 26 14:24:49 2020
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          1
Ring ID:          1/43
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   2
Highest expected: 2
Total votes:      2
Quorum:           2  
Flags:            Quorate WaitForAll 

Membership information
----------------------
    Nodeid      Votes Name
         1          1 virt-173 (local)
         2          1 virt-175


result: WaitForAll flag not removed on corosync config reload

Comment 15 errata-xmlrpc 2020-09-29 19:55:11 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (corosync bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2020:3924


Note You need to log in before you can comment on or make changes to this bug.