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