You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2015/06/23 15:28:22 UTC

[1/2] stratos git commit: changing one thread pool size and fixing restart issue with the group scaling

Repository: stratos
Updated Branches:
  refs/heads/master 0a969200d -> 7bc7b4dd4


changing one thread pool size and fixing restart issue with the group scaling


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

Branch: refs/heads/master
Commit: 1a7ea1a9bc0c29640dde664ee6853bb9efe10eb9
Parents: 0a96920
Author: reka <rt...@gmail.com>
Authored: Tue Jun 23 18:57:14 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Tue Jun 23 18:57:14 2015 +0530

----------------------------------------------------------------------
 .../internal/AutoscalerServiceComponent.java    |  8 +-----
 .../autoscaler/monitor/MonitorFactory.java      | 26 ++++++++++++++++----
 .../monitor/cluster/ClusterMonitor.java         |  4 +--
 .../monitor/component/ApplicationMonitor.java   | 25 +++++++++++++++++--
 .../monitor/component/GroupMonitor.java         |  4 +--
 .../autoscaler/util/AutoscalerConstants.java    | 10 +++-----
 6 files changed, 52 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/1a7ea1a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
index 7d1afb9..b5fd144 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
@@ -265,16 +265,10 @@ public class AutoscalerServiceComponent {
         shutdownScheduledExecutorService(AutoscalerConstants.AUTOSCALER_SCHEDULER_ID);
 
         // Shutdown application monitor executor service
-        shutdownExecutorService(AutoscalerConstants.APPLICATION_MONITOR_THREAD_POOL_ID);
-
-        // Shutdown group monitor executor service
-        shutdownExecutorService(AutoscalerConstants.GROUP_MONITOR_THREAD_POOL_ID);
+        shutdownExecutorService(AutoscalerConstants.MONITOR_THREAD_POOL_ID);
 
         // Shutdown cluster monitor scheduler executor service
         shutdownScheduledExecutorService(AutoscalerConstants.CLUSTER_MONITOR_SCHEDULER_ID);
-
-        // Shutdown cluster monitor executor service
-        shutdownExecutorService(AutoscalerConstants.CLUSTER_MONITOR_THREAD_POOL_ID);
     }
 
     private void shutdownExecutorService(String executorServiceId) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/1a7ea1a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
index 0589546..0ceac21 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
@@ -42,15 +42,15 @@ import org.apache.stratos.common.partition.PartitionRef;
 import org.apache.stratos.messaging.domain.application.Application;
 import org.apache.stratos.messaging.domain.application.Group;
 import org.apache.stratos.messaging.domain.application.ScalingDependentList;
+import org.apache.stratos.messaging.domain.instance.ClusterInstance;
+import org.apache.stratos.messaging.domain.instance.GroupInstance;
+import org.apache.stratos.messaging.domain.instance.Instance;
 import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.messaging.domain.topology.Service;
 import org.apache.stratos.messaging.domain.topology.Topology;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
+import java.util.*;
 
 /**
  * Factory class to get the Monitors.
@@ -147,6 +147,15 @@ public class MonitorFactory {
 
         Group group = application.getGroupRecursively(context.getId());
 
+        //Find whether any other instances exists in group
+        // which has not been added to in-memory model in the restart
+        Collection<Instance> instances = parentMonitor.getInstances();
+        for(Instance instance : instances) {
+            if(!instanceIds.contains(instance.getInstanceId())) {
+                instanceIds.add(instance.getInstanceId());
+            }
+        }
+
         // Starting the minimum dependencies
         groupMonitor.createInstanceAndStartDependencyAtStartup(group, instanceIds);
 
@@ -226,7 +235,14 @@ public class MonitorFactory {
                         serviceName, clusterId);
                 throw new RuntimeException(msg);
             }
-
+            //Find whether any other instances exists in group
+            // which has not been added to in-memory model in the restart
+            Collection<Instance> instances = parentMonitor.getInstances();
+            for(Instance instance : instances) {
+                if(!parentInstanceIds.contains(instance.getInstanceId())) {
+                    parentInstanceIds.add(instance.getInstanceId());
+                }
+            }
 
             // deployment policy validation
             String deploymentPolicyId = AutoscalerUtil.getDeploymentPolicyIdByAlias(parentMonitor.appId,

http://git-wip-us.apache.org/repos/asf/stratos/blob/1a7ea1a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
index 945c3e1..309fe12 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
@@ -109,9 +109,9 @@ public class ClusterMonitor extends Monitor {
                           String deploymentPolicyId) {
 
         scheduler = StratosThreadPool.getScheduledExecutorService(AutoscalerConstants.CLUSTER_MONITOR_SCHEDULER_ID, 50);
-        int threadPoolSize = Integer.getInteger(AutoscalerConstants.CLUSTER_MONITOR_THREAD_POOL_SIZE, 50);
+        int threadPoolSize = Integer.getInteger(AutoscalerConstants.MONITOR_THREAD_POOL_SIZE, 100);
         executorService = StratosThreadPool.getExecutorService(
-                AutoscalerConstants.CLUSTER_MONITOR_THREAD_POOL_ID, threadPoolSize);
+                AutoscalerConstants.MONITOR_THREAD_POOL_ID, threadPoolSize);
         this.clusterId = cluster.getClusterId();
         readConfigurations();
         this.groupScalingEnabledSubtree = groupScalingEnabledSubtree;

http://git-wip-us.apache.org/repos/asf/stratos/blob/1a7ea1a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index d7fd545..df972f0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -48,6 +48,7 @@ import org.apache.stratos.messaging.domain.application.Application;
 import org.apache.stratos.messaging.domain.application.ApplicationStatus;
 import org.apache.stratos.messaging.domain.application.GroupStatus;
 import org.apache.stratos.messaging.domain.instance.ApplicationInstance;
+import org.apache.stratos.messaging.domain.instance.ClusterInstance;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState;
 
@@ -77,9 +78,9 @@ public class ApplicationMonitor extends ParentComponentMonitor {
             TopologyInConsistentException {
         super(application);
 
-        int threadPoolSize = Integer.getInteger(AutoscalerConstants.APPLICATION_MONITOR_THREAD_POOL_SIZE, 20);
+        int threadPoolSize = Integer.getInteger(AutoscalerConstants.MONITOR_THREAD_POOL_ID, 100);
         this.executorService = StratosThreadPool.getExecutorService(
-                AutoscalerConstants.APPLICATION_MONITOR_THREAD_POOL_ID, threadPoolSize);
+                AutoscalerConstants.MONITOR_THREAD_POOL_ID, threadPoolSize);
 
         //setting the appId for the application
         this.appId = application.getUniqueIdentifier();
@@ -475,6 +476,26 @@ public class ApplicationMonitor extends ParentComponentMonitor {
                         networkPartitionIds + " [appInstanceId] " + instanceId);
             }
 
+            //Find whether any other instances exists in cluster
+            // which has not been added to in-memory model in the restart
+            Map<String, ApplicationInstance> instanceMap = application.getInstanceIdToInstanceContextMap();
+            for(ApplicationInstance instance : instanceMap.values()) {
+                if(!instanceIds.contains(instance.getInstanceId())) {
+                    ParentLevelNetworkPartitionContext context =
+                            new ParentLevelNetworkPartitionContext(instance.getNetworkPartitionId());
+                    //If application instances found in the ApplicationsTopology,
+                    // then have to add them first before creating new one
+                    ApplicationInstance appInstance = (ApplicationInstance) application.
+                            getInstanceByNetworkPartitionId(context.getId());
+                    //use the existing instance in the Topology to create the data
+                    handleApplicationInstanceCreation(application, context, appInstance);
+                    instanceIds.add(instance.getInstanceId());
+                    log.info("Burst Application instance has been added in the restart for " +
+                            "the [network partition] " + instance.getNetworkPartitionId() +
+                            " [appInstanceId] " + instance.getInstanceId());
+                }
+            }
+
             startDependency(application, instanceIds);
 
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/1a7ea1a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
index 7b91205..2d25e97 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
@@ -85,9 +85,9 @@ public class GroupMonitor extends ParentComponentMonitor {
             TopologyInConsistentException {
         super(group);
 
-        int threadPoolSize = Integer.getInteger(AutoscalerConstants.GROUP_MONITOR_THREAD_POOL_SIZE, 20);
+        int threadPoolSize = Integer.getInteger(AutoscalerConstants.MONITOR_THREAD_POOL_SIZE, 100);
         this.executorService = StratosThreadPool.getExecutorService(
-                AutoscalerConstants.GROUP_MONITOR_THREAD_POOL_ID, threadPoolSize);
+                AutoscalerConstants.MONITOR_THREAD_POOL_ID, threadPoolSize);
 
         this.groupScalingEnabled = group.isGroupScalingEnabled();
         this.appId = appId;

http://git-wip-us.apache.org/repos/asf/stratos/blob/1a7ea1a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerConstants.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerConstants.java
index 839dd5a..788c79b 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerConstants.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerConstants.java
@@ -71,13 +71,9 @@ public final class AutoscalerConstants {
      */
     public static final String PAYLOAD_DEPLOYMENT = "default";
 
-    public static final String APPLICATION_MONITOR_THREAD_POOL_ID = "application.monitor.thread.pool";
-    public static final String APPLICATION_MONITOR_THREAD_POOL_SIZE = "application.monitor.thread.pool.size";
-    public static final String GROUP_MONITOR_THREAD_POOL_ID = "group.monitor.thread.pool";
-    public static final String GROUP_MONITOR_THREAD_POOL_SIZE = "group.monitor.thread.pool.size";
+    public static final String MONITOR_THREAD_POOL_ID = "monitor.thread.pool";
+    public static final String MONITOR_THREAD_POOL_SIZE = "monitor.thread.pool.size";
     public static final String CLUSTER_MONITOR_SCHEDULER_ID = "cluster.monitor.scheduler";
-    public static final String CLUSTER_MONITOR_THREAD_POOL_ID = "cluster.monitor.thread.pool";
-    public static final String CLUSTER_MONITOR_THREAD_POOL_SIZE = "cluster.monitor.thread.pool.size";
     public static final String MEMBER_FAULT_EVENT_NAME = "member_fault";
     //scheduler
     public static final int SCHEDULE_DEFAULT_INITIAL_DELAY = 30;
@@ -122,4 +118,4 @@ public final class AutoscalerConstants {
     public static final String IDENTITY_APPLICATION_SERVICE_SFX = "services/IdentityApplicationManagementService";
     public static final String TOKEN_ENDPOINT_SFX = "oauth2/token";
     public static final String TERMINATE_DEPENDENTS = "terminate-dependents";
-}
\ No newline at end of file
+}


[2/2] stratos git commit: adding application instances validation before displaying the runtime

Posted by re...@apache.org.
adding application instances validation before displaying the runtime


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

Branch: refs/heads/master
Commit: 7bc7b4dd44760fe46fd42c4ea638bf14d4456959
Parents: 1a7ea1a
Author: reka <rt...@gmail.com>
Authored: Tue Jun 23 18:57:45 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Tue Jun 23 18:57:45 2015 +0530

----------------------------------------------------------------------
 .../rest/endpoint/api/StratosApiV41Utils.java   | 26 +++++++++++---------
 1 file changed, 15 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/7bc7b4dd/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
index ea24d09..890cecb 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
@@ -1895,22 +1895,26 @@ public class StratosApiV41Utils {
 
         }
 
-        if(applicationContext != null && applicationContext.getStatus().equals("Deployed")) {
-            try {
-                ApplicationManager.acquireReadLockForApplication(applicationId);
-                Application application = ApplicationManager.getApplications().getApplication(applicationId);
+        try {
+            ApplicationManager.acquireReadLockForApplication(applicationId);
+            Application application = ApplicationManager.getApplications().getApplication(applicationId);
+            if (application.getInstanceContextCount() > 0
+                    || (applicationContext != null &&
+                    applicationContext.getStatus().equals("Deployed"))) {
+
                 if (application == null) {
                     return null;
                 }
-                applicationBean = ObjectConverter.convertApplicationToApplicationInstanceBean(application);
-                for (ApplicationInstanceBean instanceBean : applicationBean.getApplicationInstances()) {
-                    addClustersInstancesToApplicationInstanceBean(instanceBean, application);
-                    addGroupsInstancesToApplicationInstanceBean(instanceBean, application);
-                }
-            } finally {
-                ApplicationManager.releaseReadLockForApplication(applicationId);
             }
+            applicationBean = ObjectConverter.convertApplicationToApplicationInstanceBean(application);
+            for (ApplicationInstanceBean instanceBean : applicationBean.getApplicationInstances()) {
+                addClustersInstancesToApplicationInstanceBean(instanceBean, application);
+                addGroupsInstancesToApplicationInstanceBean(instanceBean, application);
+            }
+        } finally {
+            ApplicationManager.releaseReadLockForApplication(applicationId);
         }
+
         return applicationBean;
     }