STABLE2 - groupd: send and check version messages fix

David Teigland teigland@fedoraproject.org
Mon Sep 8 19:44:00 GMT 2008


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=a7f790217bb6914f91d698b481021fb22a923aea
Commit:        a7f790217bb6914f91d698b481021fb22a923aea
Parent:        94832c3e09fe8ed376733cb6ecf446d6b22efd66
Author:        David Teigland <teigland@redhat.com>
AuthorDate:    Mon Sep 8 14:10:15 2008 -0500
Committer:     David Teigland <teigland@redhat.com>
CommitterDate: Mon Sep 8 14:19:30 2008 -0500

groupd: send and check version messages fix

bz 457104

Don't try to resend these messages (we seem to get TRY_AGAIN
back from cpg a lot for them).  They are non-essential, and we
don't want them to interfere with the existing behavior.

Signed-off-by: David Teigland <teigland@redhat.com>
---
 group/daemon/cpg.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/group/daemon/cpg.c b/group/daemon/cpg.c
index 869cdb3..f8a4e84 100644
--- a/group/daemon/cpg.c
+++ b/group/daemon/cpg.c
@@ -731,7 +731,8 @@ int do_cpg_leave(group_t *g)
 	return 0;
 }
 
-static int _send_message(cpg_handle_t h, group_t *g, void *buf, int len)
+static int _send_message(cpg_handle_t h, group_t *g, void *buf, int len,
+			 int type)
 {
 	struct iovec iov;
 	cpg_error_t error;
@@ -742,6 +743,12 @@ static int _send_message(cpg_handle_t h, group_t *g, void *buf, int len)
 
  retry:
 	error = cpg_mcast_joined(h, CPG_TYPE_AGREED, &iov, 1);
+
+	/* the version messages are non-essential, and we don't want them
+	   to interfere with anything, so don't retry */
+	if (type == MSG_GROUP_VERSION)
+		return 0;
+
 	if (error == CPG_ERR_TRY_AGAIN) {
 		retries++;
 		usleep(1000);
@@ -763,11 +770,11 @@ int send_message_groupd(group_t *g, void *buf, int len, int type)
 	if (groupd_debug_verbose > 1)
 		log_group(g, "SEND len %d %s", len, msg_type(type));
 
-	return _send_message(groupd_handle, g, buf, len);
+	return _send_message(groupd_handle, g, buf, len, type);
 }
 
 int send_message(group_t *g, void *buf, int len)
 {
-	return _send_message(g->cpg_handle, g, buf, len);
+	return _send_message(g->cpg_handle, g, buf, len, 0);
 }
 



More information about the Cluster-cvs mailing list