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;
}