mirror_corosync/exec
Jan Friesse 154895dfbe sync: Call sync_init of all services at once
This patch solves situation which can happen very rearly:
- Node B is running
- Node A is started and tries to create singleton membership. It also
  initialize service S which tries to send message during initialization
- Just before node A finished move to operational state, it gets
  Node B multicast message so moves to gather state
- Node A and B creates membership and moves to operational state and
  sync is started
- Node A and B receives message sent by node A during initialization of
  service S
- Node A exits before sync of service is finished

In this situation, node B may never execute sync_init for
service S. So node B service S is not aware of existence of node A but
it received message from it.

Similar situation can theoretically also happen during merge.

Solution is to change flow of sync, so now it looks like:

- Build service_list
- Call sync_init for all local services
- Send service_list
- Receive service_list from all members and send barier
- For all services:
  - Receive barier
  - Call sync_activate if this is not first service
  - Call sync_process for next service or finish sync if previous
    this service is the last one
  - Send barier

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
2017-11-16 15:22:19 +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 config: Allow dynamic link configuration 2017-09-21 17:16:21 +02:00
cmap.c cmap: Remove noop highest config version check 2017-10-11 17:11:33 +02:00
coroparse.c coroparse: Do not convert empty uid, gid to 0 2017-11-06 09:37:54 +01:00
cpg.c Remove redundant header file inclusion 2016-12-05 09:59:08 +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 stats: Add map with on-demand statistics 2017-07-27 15:53:04 +02:00
ipc_glue.c stats: Add cmap key to clear the various stats. 2017-10-31 17:39:14 +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: Do not overwrite logger_subsys priority 2017-03-10 09:09:42 +01:00
logconfig.h list: Replace uses of list.h with qblist.h 2016-10-27 14:56:52 +02:00
logsys.c list: Replace uses of list.h with qblist.h 2016-10-27 14:56:52 +02:00
main.c Send corosync startup notification to systemd 2017-11-09 09:49:18 +01:00
main.h Reload: Make coroparse use a designated icmap hash table 2013-09-12 16:09:06 +01:00
Makefile.am Send corosync startup notification to systemd 2017-11-09 09:49:18 +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 some missing knet stats 2017-11-16 08:35:50 +01:00
stats.h stats: Add map with on-demand statistics 2017-07-27 15:53:04 +02:00
sync.c sync: Call sync_init of all services at once 2017-11-16 15:22:19 +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: generate mcast icmap items for UDP 2017-10-30 14:14:48 +01:00
totemconfig.h totemconfig: Prefer nodelist over bindnetaddr 2017-04-11 11:19:31 +02:00
totemip.c list: Replace for_each by safe version where need 2016-10-27 14:56:52 +02:00
totemknet.c stats: Don't display errors when reading knet stat 2017-11-03 13:40:41 +01:00
totemknet.h stats: Add cmap key to clear the various stats. 2017-10-31 17:39:14 +01:00
totemnet.c stats: Add cmap key to clear the various stats. 2017-10-31 17:39:14 +01:00
totemnet.h stats: Add cmap key to clear the various stats. 2017-10-31 17:39:14 +01:00
totempg.c stats: Add cmap key to clear the various stats. 2017-10-31 17:39:14 +01:00
totemsrp.c stats: Add cmap key to clear the various stats. 2017-10-31 17:39:14 +01:00
totemsrp.h stats: Add cmap key to clear the various stats. 2017-10-31 17:39:14 +01:00
totemudp.c knet: Add support for knet compression 2017-10-23 17:30:25 +02:00
totemudp.h knet: Add support for knet compression 2017-10-23 17:30:25 +02:00
totemudpu.c knet: Add support for knet compression 2017-10-23 17:30:25 +02:00
totemudpu.h knet: Add support for knet compression 2017-10-23 17:30:25 +02:00
util.c list: Replace uses of list.h with qblist.h 2016-10-27 14:56:52 +02:00
util.h stats: Add map with on-demand statistics 2017-07-27 15:53:04 +02:00
votequorum.c votequorum: make atb consistent on nodelist reload 2017-09-26 18:05:17 +02:00
votequorum.h list: Replace uses of list.h with qblist.h 2016-10-27 14:56:52 +02:00
vsf_quorum.c Remove redundant header file inclusion 2016-12-05 09:59:08 +01: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: default to not using a watchdog 2017-09-14 17:40:48 +02:00