cluster: RHEL6 - rgmanager: Retry connection to cpglockd

Ryan McCabe rmccabe at fedoraproject.org
Tue May 1 15:01:49 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=2a5c98a455a28890c2e3e6c02d31e9f542369008
Commit:        2a5c98a455a28890c2e3e6c02d31e9f542369008
Parent:        899e2d3863fcdcc5f70d175d149b3b6ad084054c
Author:        Lon Hohberger <lhh at redhat.com>
AuthorDate:    Fri Apr 27 18:33:34 2012 -0400
Committer:     Ryan McCabe <rmccabe at redhat.com>
CommitterDate: Tue May 1 11:00:52 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>
Reviewed-by: Lon Hohberger <lhh 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