[Cluster-devel] cluster/group/daemon cpg.c
teigland at sourceware.org
teigland at sourceware.org
Thu Jun 22 22:24:49 UTC 2006
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: teigland at sourceware.org 2006-06-22 22:24:49
Modified files:
group/daemon : cpg.c
Log message:
retry cpg_join and cpg_leave if error is TRY_AGAIN
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cpg.c.diff?cvsroot=cluster&r1=1.27&r2=1.28
--- cluster/group/daemon/cpg.c 2006/06/22 18:39:26 1.27
+++ cluster/group/daemon/cpg.c 2006/06/22 22:24:48 1.28
@@ -454,7 +454,13 @@
log_group(g, "is cpg client %d name %s handle %llx", ci, name.value, h);
+ retry:
error = cpg_join(h, &name);
+ if (error == CPG_ERR_TRY_AGAIN) {
+ log_debug("cpg_join error retry");
+ sleep(1);
+ goto retry;
+ }
if (error != CPG_OK) {
log_group(g, "cpg_join error %d", error);
cpg_finalize(h);
@@ -474,11 +480,16 @@
sprintf(name.value, "%d_%s", g->level, g->name);
name.length = strlen(name.value) + 1;
+ retry:
error = cpg_leave(g->cpg_handle, &name);
+ if (error == CPG_ERR_TRY_AGAIN) {
+ log_debug("cpg_leave error retry");
+ sleep(1);
+ goto retry;
+ }
if (error != CPG_OK) {
log_group(g, "cpg_leave error %d", error);
-
- /* FIXME: what do do here? */
+ return error;
}
log_group(g, "cpg_leave ok");
More information about the Cluster-devel
mailing list