cluster: STABLE32 - rgmanager: Retry connection to cpglockd

Ryan McCabe rmccabe at fedoraproject.org
Tue May 1 13:43:49 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=26c3db58dac85cabef6001b9b9abc3a089b77c26
Commit:        26c3db58dac85cabef6001b9b9abc3a089b77c26
Parent:        f5cf113f8e43a3f9a68c55a625cc6ebc8825e4c4
Author:        Lon Hohberger <lhh at redhat.com>
AuthorDate:    Fri Apr 27 18:33:34 2012 -0400
Committer:     Ryan McCabe <rmccabe at redhat.com>
CommitterDate: Mon Apr 30 09:19:36 2012 -0400

rgmanager: Retry connection to cpglockd

Signed-off-by: Lon Hohberger <lhh at redhat.com>
Signed-off-by: Ryan McCabe <rmccabe at redhat.com>
---
 rgmanager/src/clulib/cpg_lock.c |   27 ++++++++++++++++++---------
 1 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/rgmanager/src/clulib/cpg_lock.c b/rgmanager/src/clulib/cpg_lock.c
index d257cf4..7c1c8c3 100644
--- a/rgmanager/src/clulib/cpg_lock.c
+++ b/rgmanager/src/clulib/cpg_lock.c
@@ -105,18 +105,27 @@ _cpg_lock_finished(const char *name)
 int
 cpg_lock_initialize(void)
 {
-	int ret, err;
+	int ret, err, retries = 0;
 
-	pthread_mutex_lock(&_default_lock);
-	if (_cpgh) {
+	while (retries < 10) {
+		pthread_mutex_lock(&_default_lock);
+		if (_cpgh) {
+			pthread_mutex_unlock(&_default_lock);
+			return 0;
+		}
+
+		cpg_lock_init(&_cpgh);
+		ret = (_cpgh == NULL);
+		err = errno;
 		pthread_mutex_unlock(&_default_lock);
-		return 0;
-	}
 
-	cpg_lock_init(&_cpgh);
-	ret = (_cpgh == NULL);
-	err = errno;
-	pthread_mutex_unlock(&_default_lock);
+		if (ret == 0)
+			break;
+		else {
+			sleep(1);
+			++retries;
+		}
+	}
 
 	/* Set up function pointers */
 	clu_lock = _cpg_lock;


More information about the cluster-commits mailing list