From mboxrd@z Thu Jan 1 00:00:00 1970 From: teigland@sourceware.org Date: 15 Sep 2006 20:07:15 -0000 Subject: [Cluster-devel] cluster/group/daemon app.c Message-ID: <20060915200715.17698.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Changes by: teigland at sourceware.org 2006-09-15 20:07:15 Modified files: group/daemon : app.c Log message: positive return code from recover_current_event() should just indicate that the event should be processed again, and not added to the return value of process_app() which causes the whole thing to be called in a loop Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/app.c.diff?cvsroot=cluster&r1=1.44&r2=1.45 --- cluster/group/daemon/app.c 2006/09/14 20:56:55 1.44 +++ cluster/group/daemon/app.c 2006/09/15 20:07:15 1.45 @@ -1323,7 +1323,8 @@ dump_group(g); } -/* handle a node failure while processing an event */ +/* handle a node failure while processing an event. returning > 0 means + we want process_current_event() to be called for the group */ int recover_current_event(group_t *g) { @@ -1443,17 +1444,13 @@ rv += ret; ret = recover_current_event(g); - if (ret > 0) { - rv += ret; - - /* it's important that we call process_current_event() - when recover_current_event() returns 1 */ + if (ret <= 0) + goto out; - ret = process_current_event(g); - if (ret < 0) - goto out; - rv += ret; - } + ret = process_current_event(g); + if (ret < 0) + goto out; + rv += ret; } else { /* We only take on a new non-recovery event if there are no recovery sets outstanding. The new event may be @@ -1481,6 +1478,8 @@ return rv; } +/* process_apps() will be called again immediately if it returns > 0 */ + int process_apps(void) { group_t *g, *safe;