Repository: incubator-stratos
Updated Branches:
  refs/heads/master d912bf2db -> 61a04ed8f


fixing https://issues.apache.org/jira/browse/STRATOS-564 - Cluster monitor 
creation should be re-tried few times, if failed once


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

Branch: refs/heads/master
Commit: 61a04ed8fb28f260fd710cbab3ae6f513985eab9
Parents: d912bf2
Author: Nirmal Fernando <[email protected]>
Authored: Sun Mar 30 00:08:07 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Sun Mar 30 00:08:07 2014 +0530

----------------------------------------------------------------------
 .../topology/AutoscalerTopologyReceiver.java    | 85 ++++++++++++++------
 1 file changed, 59 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/61a04ed8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
index 44ace7d..e000777 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
@@ -367,19 +367,35 @@ public class AutoscalerTopologyReceiver implements 
Runnable {
         }
 
         public void run() {
-            LbClusterMonitor monitor;
-            try {
-                monitor = AutoscalerUtil.getLBClusterMonitor(cluster);
-
-            } catch (PolicyValidationException e) {
-                String msg = "Cluster monitor creation failed for cluster: 
"+cluster.getClusterId();
-                log.error(msg, e);
-                throw new RuntimeException(msg, e);
-
-            } catch(PartitionValidationException e){
-                String msg = "Cluster monitor creation failed for cluster: 
"+cluster.getClusterId();
-                log.error(msg, e);
-                throw new RuntimeException(msg, e);
+            LbClusterMonitor monitor = null;
+            int retries = 5;
+            boolean success = false;
+            do {
+               try {
+                                       Thread.sleep(5000);
+                               } catch (InterruptedException e1) {
+                               }
+               try {
+                       monitor = AutoscalerUtil.getLBClusterMonitor(cluster);
+                       success = true;
+                       
+               } catch (PolicyValidationException e) {
+                       String msg = "LB Cluster monitor creation failed for 
cluster: "+cluster.getClusterId();
+                       log.debug(msg, e);
+                       retries--;
+                       
+               } catch(PartitionValidationException e){
+                       String msg = "LB Cluster monitor creation failed for 
cluster: "+cluster.getClusterId();
+                       log.debug(msg, e);
+                       retries--;
+               }
+            } while (!success && retries <= 0);
+            
+            if (monitor == null) {
+               String msg = "LB Cluster monitor creation failed, even after 
retrying for 5 times, "
+                               + "for cluster: "+cluster.getClusterId();
+               log.error(msg);
+               throw new RuntimeException(msg);
             }
 
             Thread th = new Thread(monitor);
@@ -400,19 +416,36 @@ public class AutoscalerTopologyReceiver implements 
Runnable {
         }
 
         public void run() {
-            ClusterMonitor monitor;
-            try {
-                monitor = AutoscalerUtil.getClusterMonitor(cluster);
-
-            } catch (PolicyValidationException e) {
-                String msg = "Cluster monitor creation failed for cluster: 
"+cluster.getClusterId();
-                log.error(msg, e);
-                throw new RuntimeException(msg, e);
-
-            } catch(PartitionValidationException e){
-                String msg = "Cluster monitor creation failed for cluster: 
"+cluster.getClusterId();
-                log.error(msg, e);
-                throw new RuntimeException(msg, e);
+            ClusterMonitor monitor = null;
+            int retries = 5;
+            boolean success = false;
+            do {
+               try {
+                                       Thread.sleep(5000);
+                               } catch (InterruptedException e1) {
+                               }
+               
+               try {
+                       monitor = AutoscalerUtil.getClusterMonitor(cluster);
+                       success = true;
+                       
+               } catch (PolicyValidationException e) {
+                       String msg = "Cluster monitor creation failed for 
cluster: "+cluster.getClusterId();
+                       log.debug(msg, e);
+                       retries--;
+                       
+               } catch(PartitionValidationException e){
+                       String msg = "Cluster monitor creation failed for 
cluster: "+cluster.getClusterId();
+                       log.debug(msg, e);
+                       retries--;
+               }
+            } while (!success && retries != 0);
+            
+            if (monitor == null) {
+               String msg = "Cluster monitor creation failed, even after 
retrying for 5 times, "
+                               + "for cluster: "+cluster.getClusterId();
+               log.error(msg);
+               throw new RuntimeException(msg);
             }
 
             Thread th = new Thread(monitor);

Reply via email to