From 0fc8b907d96860a065bebf996c254541599e6f73 Mon Sep 17 00:00:00 2001 From: R-Rajkumar Date: Wed, 17 Sep 2014 09:35:04 +0530 Subject: [PATCH 1/2] removing kubernetes cluster monitor on cluster removed event --- .../stratos/cloud/controller/topology/TopologyBuilder.java | 1 + 1 file changed, 1 insertion(+) diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java index a10f2bb0fa..f56dca4c38 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java @@ -192,6 +192,7 @@ public static void handleClusterRemoved(ClusterContext ctxt) { try { TopologyManager.acquireWriteLock(); Cluster cluster = service.removeCluster(ctxt.getClusterId()); + ctxt.setKubernetesCluster(cluster.isKubernetesCluster()); deploymentPolicy = cluster.getDeploymentPolicyName(); TopologyManager.updateTopology(topology); } finally { From becdbf2015e79f7b667c1cd16591e705bd116d4a Mon Sep 17 00:00:00 2001 From: R-Rajkumar Date: Wed, 17 Sep 2014 10:59:38 +0530 Subject: [PATCH 2/2] retrying if container creation failed --- .../monitor/KubernetesClusterMonitor.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesClusterMonitor.java index dc355d5eec..a534beda91 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesClusterMonitor.java @@ -28,6 +28,9 @@ public class KubernetesClusterMonitor implements Runnable{ private String lbReferenceType; private boolean hasPrimary; private int numberOfReplicasInServiceCluster = 0; + // is container created successfully? + boolean success = false; + int retryInterval = 60000; public KubernetesClusterMonitor(KubernetesClusterContext kubernetesClusterCtxt, String serviceClusterID, String serviceId, AutoscalePolicy autoscalePolicy) { @@ -92,17 +95,20 @@ private void monitor() { if (this.numberOfReplicasInServiceCluster < minReplicas) { - int numOfAdditionalReplicas = minReplicas - this.numberOfReplicasInServiceCluster; - - for (int i = 0; i < numOfAdditionalReplicas; i++) { + while (success) { try { CloudControllerClient.getInstance().createContainer(kubernetesClusterId, clusterId); - this.numberOfReplicasInServiceCluster++; + success = true; + numberOfReplicasInServiceCluster = minReplicas; } catch (Throwable e) { - String message = "Cannot create a container"; - log.error(message, e); - throw new RuntimeException(message, e); + String message = "Cannot create a container, will retry in "+(retryInterval/1000)+"s"; + log.debug(message, e); } + + try { + Thread.sleep(retryInterval); + } catch (InterruptedException e1) { + } } } } finally {