mirror_corosync/exec
Jan Friesse ca320beac2 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>
2020-03-24 14:13:32 +01:00
..
.gitignore Add .gitignore files. 2010-10-21 07:43:46 -07:00
apidef.c CFG: Remove ring-reenable code 2017-08-03 14:32:02 +02:00
apidef.h Update copyright header dates in exec directory 2012-02-13 17:05:04 -07:00
cfg.c logging: Add CS_PRI_NODE_ID and CS_PRI_RING_ID 2019-07-03 10:53:52 +02:00
cmap.c cmap: Assert copied string length 2019-11-28 09:44:44 +01:00
coroparse.c knet: Use block_unlisted_ips 2019-05-29 16:30:18 +02:00
cpg.c cpg: Change downlist log level 2020-01-09 12:40:32 +01:00
cs_queue.h Update copyright header dates in exec directory 2012-02-13 17:05:04 -07:00
fsm.h Make logging of WD and MON service correct 2012-08-16 14:45:15 +02:00
icmap.c icmap: fix the icmap_get_*_r functions 2019-11-18 16:29:57 +01:00
ipc_glue.c main: Move sched paramaters to config file 2018-11-15 17:30:03 +01:00
ipcs_stats.h stats: Add cmap key to clear the various stats. 2017-10-31 17:39:14 +01:00
logconfig.c logconfig: Remove double free of value 2019-11-28 09:44:44 +01:00
logconfig.h list: Replace uses of list.h with qblist.h 2016-10-27 14:56:52 +02:00
logsys.c logsys: Support hires timestamp 2018-10-29 17:45:29 +01:00
main.c main: Add schedmiss timestamp into message 2020-02-27 08:37:35 +01:00
main.h main: Replace COROSYNC_MAIN_CONFIG_FILE 2018-11-15 17:30:14 +01:00
Makefile.am nozzle: Add support for libnozzle devices 2019-02-26 13:11:35 +01:00
mon.c list: Replace uses of list.h with qblist.h 2016-10-27 14:56:52 +02:00
pload.c build: bring SOLARIS up to the same standard as other OSes 2012-08-30 15:00:27 +02:00
quorum.c Remove redundant header file inclusion 2016-12-05 09:59:08 +01:00
quorum.h Update copyright header dates in exec directory 2012-02-13 17:05:04 -07:00
schedwrk.c schedwrk: Cleanup and make it work on PPC BE 2016-05-17 16:29:25 +02:00
schedwrk.h Update copyright header dates in exec directory 2012-02-13 17:05:04 -07:00
service.c service: Fix memleak in service_unlink_and_exit 2013-06-21 11:21:29 +02:00
service.h service: remove leftovers from mt corosync 2012-08-09 15:10:16 +02:00
stats.c stats: Add stats for scheduler misses 2020-01-22 17:06:10 +01:00
stats.h stats: Add stats for scheduler misses 2020-01-22 17:06:10 +01:00
sync.c sync: Assert sync_callbacks.name length 2019-11-28 09:44:44 +01:00
sync.h sync: kill evil and syncv1 in one shot 2012-03-09 11:15:08 +01:00
timer.c Update copyright header dates in exec directory 2012-02-13 17:05:04 -07:00
timer.h Update copyright header dates in exec directory 2012-02-13 17:05:04 -07:00
totemconfig.c totemconfig: Initialize warnings variable 2019-11-28 09:44:44 +01:00
totemconfig.h config: Allow links to have different ip_versions 2017-12-22 17:15:19 +01:00
totemip.c totemip: compare sin6_scope_id and interface_num 2020-02-21 15:46:22 +01:00
totemknet.c cfgtool: Improve link status display 2020-02-12 13:08:25 +01:00
totemknet.h totem: Display IP of sender 2018-03-16 13:58:15 +01:00
totemnet.c totem: Display IP of sender 2018-03-16 13:58:15 +01:00
totemnet.h totem: Display IP of sender 2018-03-16 13:58:15 +01:00
totempg.c Initialize stack allocated memory 2019-11-08 11:20:18 +01:00
totemsrp.c Initialize stack allocated memory 2019-11-08 11:20:18 +01:00
totemsrp.h Add option to force cluster into GATHER state 2018-09-07 13:27:36 +02:00
totemudp.c totem: Display IP of sender 2018-03-16 13:58:15 +01:00
totemudp.h totem: Display IP of sender 2018-03-16 13:58:15 +01:00
totemudpu.c udpu: Drop packets from unlisted IPs 2019-05-29 16:30:10 +02:00
totemudpu.h totem: Display IP of sender 2018-03-16 13:58:15 +01:00
util.c main: Rename run_dir to state_dir 2018-12-14 13:48:33 +01:00
util.h main: Rename run_dir to state_dir 2018-12-14 13:48:33 +01:00
votequorum.c votequorum: set wfa status only on startup 2020-03-24 14:13:32 +01:00
votequorum.h list: Replace uses of list.h with qblist.h 2016-10-27 14:56:52 +02:00
vsf_quorum.c logging: Add CS_PRI_NODE_ID and CS_PRI_RING_ID 2019-07-03 10:53:52 +02:00
vsf_ykd.c YKD: Fix loading of YKD quorum module 2014-08-18 09:33:59 +01:00
vsf_ykd.h list: Replace uses of list.h with qblist.h 2016-10-27 14:56:52 +02:00
vsf.h Update copyright header dates in exec directory 2012-02-13 17:05:04 -07:00
wd.c wd: fix snprintf warnings 2017-12-01 17:23:54 +01:00