cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] cluster/group/daemon cpg.c
@ 2006-06-22 22:24 teigland
  0 siblings, 0 replies; 5+ messages in thread
From: teigland @ 2006-06-22 22:24 UTC (permalink / raw)
  To: cluster-devel.redhat.com

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");



^ permalink raw reply	[flat|nested] 5+ messages in thread
* [Cluster-devel] cluster/group/daemon cpg.c
@ 2006-07-07 15:13 teigland
  0 siblings, 0 replies; 5+ messages in thread
From: teigland @ 2006-07-07 15:13 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2006-07-07 15:13:14

Modified files:
	group/daemon   : cpg.c 

Log message:
	complain and ignore a cpg confchg reason we don't understand

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cpg.c.diff?cvsroot=cluster&r1=1.29&r2=1.30

--- cluster/group/daemon/cpg.c	2006/06/30 15:29:17	1.29
+++ cluster/group/daemon/cpg.c	2006/07/07 15:13:13	1.30
@@ -289,10 +289,19 @@
 		log_group(g, "confchg removed node %d reason %d",
 			  saved_left[i].nodeid, saved_left[i].reason);
 
-		if (saved_left[i].reason == CPG_REASON_LEAVE)
+		switch (saved_left[i].reason) {
+		case CPG_REASON_LEAVE:
 			process_node_leave(g, saved_left[i].nodeid);
-		else
+			break;
+		case CPG_REASON_NODEDOWN:
+		case CPG_REASON_PROCDOWN:
 			process_node_down(g, saved_left[i].nodeid);
+			break;
+		default:
+			log_error(g, "unknown leave reason %d node %d",
+				  saved_left[i].reason,
+				  saved_joined[i].nodeid);
+		}
 	}
 }
 
@@ -343,26 +352,14 @@
 	saved_name.length = group_name->length;
 	memcpy(&saved_name.value, &group_name->value, group_name->length);
 
-	/* fprintf(stderr, "CONFCHG LEFT: "); */
-	for (i = 0; i < left_list_entries; i++) {
+	for (i = 0; i < left_list_entries; i++)
 		saved_left[i] = left_list[i];
-		/* fprintf(stderr, "%d ", left_list[i].nodeid); */
-	}
-	/* fprintf(stderr, "\n"); */
 
-	/* fprintf(stderr, "CONFCHG JOIN: "); */
-	for (i = 0; i < joined_list_entries; i++) {
+	for (i = 0; i < joined_list_entries; i++)
 		saved_joined[i] = joined_list[i];
-		/* fprintf(stderr, "%d ", joined_list[i].nodeid); */
-	}
-	/* fprintf(stderr, "\n"); */
 
-	/* fprintf(stderr, "CONFCHG MEMB: "); */
-	for (i = 0; i < member_list_entries; i++) {
+	for (i = 0; i < member_list_entries; i++)
 		saved_member[i] = member_list[i];
-		/* fprintf(stderr, "%d ", member_list[i].nodeid); */
-	}
-	/* fprintf(stderr, "\n"); */
 
 	got_confchg = 1;
 }



^ permalink raw reply	[flat|nested] 5+ messages in thread
* [Cluster-devel] cluster/group/daemon cpg.c
@ 2006-09-08 23:14 teigland
  0 siblings, 0 replies; 5+ messages in thread
From: teigland @ 2006-09-08 23:14 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2006-09-08 23:14:56

Modified files:
	group/daemon   : cpg.c 

Log message:
	use same retry delay on cpg sends as gfs_controld, usleep(1000)
	between each retry

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cpg.c.diff?cvsroot=cluster&r1=1.30&r2=1.31

--- cluster/group/daemon/cpg.c	2006/07/07 15:13:13	1.30
+++ cluster/group/daemon/cpg.c	2006/09/08 23:14:56	1.31
@@ -528,11 +528,15 @@
 		log_group(g, "cpg_mcast_joined error %d handle %llx", error, h);
 	if (error == CPG_ERR_TRY_AGAIN) {
 		retries++;
-		if (retries > 3)
-			sleep(1);
+		usleep(1000);
+		if (!(retries % 100))
+			log_error(g, "cpg_mcast_joined retry %d", retries);
 		goto retry;
 	}
 
+	if (retries)
+		log_group(g, "cpg_mcast_joined retried %d", retries);
+
 	return 0;
 }
 



^ permalink raw reply	[flat|nested] 5+ messages in thread
* [Cluster-devel] cluster/group/daemon cpg.c
@ 2006-09-28 19:26 teigland
  0 siblings, 0 replies; 5+ messages in thread
From: teigland @ 2006-09-28 19:26 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2006-09-28 19:26:45

Modified files:
	group/daemon   : cpg.c 

Log message:
	put a message in syslog if we get a cpg error that we can't deal with

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cpg.c.diff?cvsroot=cluster&r1=1.33&r2=1.34

--- cluster/group/daemon/cpg.c	2006/09/26 21:32:38	1.33
+++ cluster/group/daemon/cpg.c	2006/09/28 19:26:45	1.34
@@ -547,15 +547,14 @@
 
  retry:
 	error = cpg_mcast_joined(h, CPG_TYPE_AGREED, &iov, 1);
-	if (error != CPG_OK)
-		log_group(g, "cpg_mcast_joined error %d handle %llx", error, h);
 	if (error == CPG_ERR_TRY_AGAIN) {
 		retries++;
 		usleep(1000);
 		if (!(retries % 100))
 			log_error(g, "cpg_mcast_joined retry %d", retries);
 		goto retry;
-	}
+	} else if (error != CPG_OK)
+		log_error(g, "cpg_mcast_joined error %d handle %llx", error, h);
 
 	if (retries)
 		log_group(g, "cpg_mcast_joined retried %d", retries);



^ permalink raw reply	[flat|nested] 5+ messages in thread
* [Cluster-devel] cluster/group/daemon cpg.c
@ 2006-10-13 15:57 teigland
  0 siblings, 0 replies; 5+ messages in thread
From: teigland @ 2006-10-13 15:57 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2006-10-13 15:57:23

Modified files:
	group/daemon   : cpg.c 

Log message:
	If cpg_join or cpg_leave are stuck in a retry loop, put an error
	message in syslog after ten seconds.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cpg.c.diff?cvsroot=cluster&r1=1.35&r2=1.36

--- cluster/group/daemon/cpg.c	2006/10/06 16:55:19	1.35
+++ cluster/group/daemon/cpg.c	2006/10/13 15:57:23	1.36
@@ -475,7 +475,7 @@
 	cpg_error_t error;
 	cpg_handle_t h;
 	struct cpg_name name;
-	int fd, ci;
+	int fd, ci, i = 0;
 
 	error = cpg_initialize(&h, &callbacks);
 	if (error != CPG_OK) {
@@ -502,6 +502,8 @@
 	if (error == CPG_ERR_TRY_AGAIN) {
 		log_debug("cpg_join error retry");
 		sleep(1);
+		if (!(++i % 10))
+			log_error(g, "cpg_join error retrying");
 		goto retry;
 	}
 	if (error != CPG_OK) {
@@ -518,6 +520,7 @@
 {
 	cpg_error_t error;
 	struct cpg_name name;
+	int i = 0;
 
 	memset(&name, 0, sizeof(name));
 	sprintf(name.value, "%d_%s", g->level, g->name);
@@ -528,6 +531,8 @@
 	if (error == CPG_ERR_TRY_AGAIN) {
 		log_debug("cpg_leave error retry");
 		sleep(1);
+		if (!(++i % 10))
+			log_error(g, "cpg_leave error retrying");
 		goto retry;
 	}
 	if (error != CPG_OK) {



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-10-13 15:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-22 22:24 [Cluster-devel] cluster/group/daemon cpg.c teigland
  -- strict thread matches above, loose matches on Subject: below --
2006-07-07 15:13 teigland
2006-09-08 23:14 teigland
2006-09-28 19:26 teigland
2006-10-13 15:57 teigland

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).