You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/12/03 22:38:36 UTC

stratos git commit: Adding logic to wait until hazelcast instance to be initialized

Repository: stratos
Updated Branches:
  refs/heads/master fd5c273d0 -> d5c4a6739


Adding logic to wait until hazelcast instance to be initialized


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d5c4a673
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d5c4a673
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d5c4a673

Branch: refs/heads/master
Commit: d5c4a67391a7fbddfe9fccf0deb0203837d311cb
Parents: fd5c273
Author: Imesh Gunaratne <im...@apache.org>
Authored: Thu Dec 4 03:08:26 2014 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Thu Dec 4 03:08:26 2014 +0530

----------------------------------------------------------------------
 .../common/constants/StratosConstants.java        |  2 ++
 .../internal/StratosCommonServiceComponent.java   | 18 +++++++++++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/d5c4a673/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
index 36a0f20..fd44b9f 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
@@ -185,5 +185,7 @@ public class StratosConstants {
 	public static final String NO_LOAD_BALANCER = "no.load.balancer";
 	public static final String EXISTING_LOAD_BALANCERS = "existing.load.balancers";
 	public static final String LOAD_BALANCED_SERVICE_TYPE = "load.balanced.service.type";
+
+    public static final long HAZELCAST_INSTANCE_INIT_TIMEOUT = 300000; // 5 min
 }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/d5c4a673/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/StratosCommonServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/StratosCommonServiceComponent.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/StratosCommonServiceComponent.java
index 2ea1cd7..13d9b2a 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/StratosCommonServiceComponent.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/StratosCommonServiceComponent.java
@@ -19,10 +19,12 @@
 package org.apache.stratos.common.internal;
 
 import com.hazelcast.core.HazelcastInstance;
+import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.common.clustering.DistributedObjectProvider;
 import org.apache.stratos.common.clustering.impl.HazelcastDistributedObjectProvider;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.util.CommonUtil;
 import org.apache.stratos.common.util.StratosConfiguration;
 import org.osgi.framework.BundleContext;
@@ -68,6 +70,20 @@ public class StratosCommonServiceComponent {
                 CommonUtil.setEula(eula);
             }
 
+            AxisConfiguration axisConfig = ServiceReferenceHolder.getInstance().getAxisConfiguration();
+            if((axisConfig != null) && (axisConfig.getClusteringAgent() != null)) {
+                // Wait for the hazelcast instance to be available
+                long startTime = System.currentTimeMillis();
+                log.info("Waiting for the hazelcast instance to be initialized...");
+                while(ServiceReferenceHolder.getInstance().getHazelcastInstance() == null) {
+                    Thread.sleep(1000);
+                    if((System.currentTimeMillis() - startTime) >= StratosConstants.HAZELCAST_INSTANCE_INIT_TIMEOUT) {
+                        throw new RuntimeException("Hazelcast instance was not initialized within "
+                                + StratosConstants.HAZELCAST_INSTANCE_INIT_TIMEOUT /1000 + " seconds");
+                    }
+                }
+            }
+
             // Register distributed object provider service
             DistributedObjectProvider distributedObjectProvider = new HazelcastDistributedObjectProvider();
             bundleContext.registerService(DistributedObjectProvider.class, distributedObjectProvider, null);
@@ -85,7 +101,7 @@ public class StratosCommonServiceComponent {
                 log.info("Stratos common service bundle is activated");
             }
         } catch (Throwable e) {
-            log.error("Error in activating stratos common service component" + e.toString());
+            log.error("Error in activating stratos common service component", e);
         }
     }