]> git.proxmox.com Git - mirror_corosync.git/commit
votequorum: set wfa status only on startup
authorJan Friesse <jfriesse@redhat.com>
Tue, 10 Mar 2020 16:49:27 +0000 (17:49 +0100)
committerJan Friesse <jfriesse@redhat.com>
Tue, 24 Mar 2020 13:13:32 +0000 (14:13 +0100)
commitca320beac25f82c0c555799e647a47975a333c28
treec1c94365a501618f773f4b05d5192dec77e574dd
parent5f543465bb3506b7f4929a426f1c22a9c854cecd
votequorum: set wfa status only on startup

Previously reload of configuration with enabled wait_for_all result in
set of wait_for_all_status which set cluster_is_quorate to 0 but didn't
inform the quorum service so votequorum and quorum information may get
out of sync.

Example is 1 node cluster, which is extended to 3 nodes. Quorum service
reports cluster as a quorate (incorrect) and votequorum as not-quorate
(correct). Similar behavior happens when extending cluster in general,
but some configurations are less incorrect (3->4).

Discussed solution was to inform quorum service but that would mean
every reload would cause loss of quorum until all nodes would be seen
again.

Such behaviour is consistent but seems to be a bit too strict.

Proposed solution sets wait_for_all_status only on startup and
doesn't touch it during reload.

This solution fulfills requirement of "cluster will be quorate for
the first time only after all nodes have been visible at least
once at the same time." because node clears wait_for_all_status only
after it sees all other nodes or joins cluster which is quorate. It also
solves problem with extending cluster, because when cluster becomes
unquorate (1->3) wait_for_all_status is set.

Added assert is only for ensure that I haven't missed any case when
quorate cluster may become unquorate.

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
exec/votequorum.c