You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2016/01/05 16:47:56 UTC
[47/50] [abbrv] stratos git commit: making min threads for a Thread
pool configurable via a ratio and making stratos.manager.thread.pool &
cloud.controller.thread.pool configurable
making min threads for a Thread pool configurable via a ratio and making stratos.manager.thread.pool & cloud.controller.thread.pool configurable
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/80882404
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/80882404
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/80882404
Branch: refs/heads/stratos-4.1.x
Commit: 8088240408b3b66fcbccf9740340a8790e050e7b
Parents: 991da8e
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Tue Jan 5 16:15:13 2016 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Tue Jan 5 16:15:13 2016 +0530
----------------------------------------------------------------------
.../internal/AutoscalerServiceComponent.java | 5 ++++-
.../autoscaler/monitor/cluster/ClusterMonitor.java | 5 ++++-
.../monitor/component/ApplicationMonitor.java | 5 ++++-
.../autoscaler/monitor/component/GroupMonitor.java | 6 +++++-
.../monitor/component/ParentComponentMonitor.java | 5 ++++-
.../publisher/DASScalingDecisionPublisher.java | 6 +++++-
.../internal/CloudControllerServiceComponent.java | 10 +++++++++-
.../services/impl/CloudControllerServiceImpl.java | 5 ++++-
.../publisher/DASMemberInformationPublisher.java | 6 +++++-
.../publisher/DASMemberStatusPublisher.java | 6 +++++-
.../controller/util/CloudControllerConstants.java | 2 ++
.../stratos/common/constants/StratosConstants.java | 2 ++
.../threading/GracefulThreadPoolTerminator.java | 14 ++++++++++----
.../stratos/common/threading/StratosThreadPool.java | 4 ++--
.../statistics/LoadBalancerStatisticsExecutor.java | 6 +++++-
.../internal/StratosManagerServiceComponent.java | 13 +++++++++++--
.../manager/utils/StratosManagerConstants.java | 6 +-----
.../message/receiver/StratosEventReceiver.java | 5 ++++-
18 files changed, 86 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/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 bcd4fc1..d9b6729 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
@@ -45,6 +45,7 @@ import org.apache.stratos.autoscaler.util.AutoscalerUtil;
import org.apache.stratos.autoscaler.util.ConfUtil;
import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
import org.apache.stratos.common.Component;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.services.ComponentStartUpSynchronizer;
import org.apache.stratos.common.services.DistributedObjectProvider;
import org.apache.stratos.common.threading.StratosThreadPool;
@@ -94,8 +95,10 @@ public class AutoscalerServiceComponent {
XMLConfiguration conf = ConfUtil.getInstance(AutoscalerConstants.COMPONENTS_CONFIG).getConfiguration();
int threadPoolSize = conf
.getInt(AutoscalerConstants.THREAD_POOL_SIZE_KEY, AutoscalerConstants.AUTOSCALER_THREAD_POOL_SIZE);
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
executor = StratosThreadPool.getExecutorService(AutoscalerConstants.AUTOSCALER_THREAD_POOL_ID, ((int) Math
- .ceil(threadPoolSize / 3)), threadPoolSize);
+ .ceil(threadPoolSize / divisor)), threadPoolSize);
int schedulerThreadPoolSize = conf.getInt(AutoscalerConstants.SCHEDULER_THREAD_POOL_SIZE_KEY,
AutoscalerConstants.AUTOSCALER_SCHEDULER_THREAD_POOL_SIZE);
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/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 ee936db..898a26d 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
@@ -108,8 +108,11 @@ public class ClusterMonitor extends Monitor {
String deploymentPolicyId) {
int threadPoolSize = Integer.getInteger(AutoscalerConstants.MONITOR_THREAD_POOL_SIZE, 100);
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
executor = StratosThreadPool.getExecutorService(
- AutoscalerConstants.MONITOR_THREAD_POOL_ID, ((int)Math.ceil(threadPoolSize/3)), threadPoolSize);
+ AutoscalerConstants.MONITOR_THREAD_POOL_ID, ((int)Math.ceil(threadPoolSize/divisor)),
+ threadPoolSize);
this.clusterId = cluster.getClusterId();
scheduler = StratosThreadPool.getScheduledExecutorService(clusterId, 2);
readConfigurations();
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/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 c94ef7e..5836ee8 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
@@ -18,6 +18,7 @@
*/
package org.apache.stratos.autoscaler.monitor.component;
+import org.apache.commons.configuration.SystemConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.algorithms.NetworkPartitionAlgorithm;
@@ -79,8 +80,10 @@ public class ApplicationMonitor extends ParentComponentMonitor {
super(application);
int threadPoolSize = Integer.getInteger(AutoscalerConstants.MONITOR_THREAD_POOL_SIZE, 100);
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
this.executor = StratosThreadPool.getExecutorService(AutoscalerConstants.MONITOR_THREAD_POOL_ID,
- ((int)Math.ceil(threadPoolSize/3)), threadPoolSize);
+ ((int)Math.ceil(threadPoolSize/divisor)), threadPoolSize);
//setting the appId for the application
this.appId = application.getUniqueIdentifier();
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/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 d5cfc3f..a9c320f 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
@@ -40,6 +40,7 @@ import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
import org.apache.stratos.autoscaler.util.AutoscalerConstants;
import org.apache.stratos.autoscaler.util.AutoscalerUtil;
import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.partition.NetworkPartitionRef;
import org.apache.stratos.common.partition.PartitionRef;
import org.apache.stratos.common.threading.StratosThreadPool;
@@ -85,8 +86,11 @@ public class GroupMonitor extends ParentComponentMonitor {
super(group);
int threadPoolSize = Integer.getInteger(AutoscalerConstants.MONITOR_THREAD_POOL_SIZE, 100);
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
this.executor = StratosThreadPool.getExecutorService(
- AutoscalerConstants.MONITOR_THREAD_POOL_ID, ((int)Math.ceil(threadPoolSize/3)),threadPoolSize);
+ AutoscalerConstants.MONITOR_THREAD_POOL_ID, ((int)Math.ceil(threadPoolSize/divisor)),
+ threadPoolSize);
this.groupScalingEnabled = group.isGroupScalingEnabled();
this.appId = appId;
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
index 24983a9..a7e44cc 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
@@ -109,8 +109,11 @@ public abstract class ParentComponentMonitor extends Monitor {
}
// Create the executor service with identifier and thread pool size
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
executor = StratosThreadPool.getExecutorService(AutoscalerConstants.AUTOSCALER_THREAD_POOL_ID,
- ((int)Math.ceil(AutoscalerConstants.AUTOSCALER_THREAD_POOL_SIZE/3)),AutoscalerConstants
+ ((int)Math.ceil(AutoscalerConstants.AUTOSCALER_THREAD_POOL_SIZE/divisor)),
+ AutoscalerConstants
.AUTOSCALER_THREAD_POOL_SIZE);
networkPartitionContextsMap = new ConcurrentHashMap<String, NetworkPartitionContext>();
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/statistics/publisher/DASScalingDecisionPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/statistics/publisher/DASScalingDecisionPublisher.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/statistics/publisher/DASScalingDecisionPublisher.java
index ad0e77b..3b5ca4e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/statistics/publisher/DASScalingDecisionPublisher.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/statistics/publisher/DASScalingDecisionPublisher.java
@@ -22,6 +22,7 @@ package org.apache.stratos.autoscaler.statistics.publisher;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.util.AutoscalerConstants;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.threading.StratosThreadPool;
import org.wso2.carbon.databridge.commons.Attribute;
import org.wso2.carbon.databridge.commons.AttributeType;
@@ -46,8 +47,11 @@ public class DASScalingDecisionPublisher extends ScalingDecisionPublisher {
public DASScalingDecisionPublisher() {
super(createStreamDefinition(), DAS_THRIFT_CLIENT_NAME);
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
executor = StratosThreadPool.getExecutorService(AutoscalerConstants.STATS_PUBLISHER_THREAD_POOL_ID,
- ((int)Math.ceil(STATS_PUBLISHER_THREAD_POOL_SIZE/3)), STATS_PUBLISHER_THREAD_POOL_SIZE);
+ ((int)Math.ceil(STATS_PUBLISHER_THREAD_POOL_SIZE/divisor)),
+ STATS_PUBLISHER_THREAD_POOL_SIZE);
}
public static DASScalingDecisionPublisher getInstance() {
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
index 720bf17..569d566 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
@@ -33,7 +33,9 @@ import org.apache.stratos.cloud.controller.messaging.receiver.initializer.Initia
import org.apache.stratos.cloud.controller.messaging.receiver.instance.status.InstanceStatusTopicReceiver;
import org.apache.stratos.cloud.controller.services.CloudControllerService;
import org.apache.stratos.cloud.controller.services.impl.CloudControllerServiceImpl;
+import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
import org.apache.stratos.common.Component;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.services.ComponentStartUpSynchronizer;
import org.apache.stratos.common.services.DistributedObjectProvider;
import org.apache.stratos.common.threading.StratosThreadPool;
@@ -88,8 +90,14 @@ public class CloudControllerServiceComponent {
log.debug("Activating CloudControllerServiceComponent...");
}
try {
+ Integer ccThreadPoolSize = Integer.getInteger(CloudControllerConstants.CC_THREAD_POOL_SIZE);
+ if (ccThreadPoolSize == null || ccThreadPoolSize <= 0) {
+ ccThreadPoolSize = THREAD_POOL_SIZE;
+ }
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
executor = StratosThreadPool.getExecutorService(THREAD_POOL_ID, ((int)Math.ceil
- (THREAD_POOL_SIZE/3)),THREAD_POOL_SIZE);
+ (ccThreadPoolSize/divisor)),ccThreadPoolSize);
scheduler = StratosThreadPool
.getScheduledExecutorService(SCHEDULER_THREAD_POOL_ID, SCHEDULER_THREAD_POOL_SIZE);
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index f3e363f..f5901e1 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -35,6 +35,7 @@ import org.apache.stratos.cloud.controller.services.CloudControllerService;
import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
import org.apache.stratos.common.Property;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.domain.LoadBalancingIPType;
import org.apache.stratos.common.threading.StratosThreadPool;
import org.apache.stratos.messaging.domain.topology.*;
@@ -63,8 +64,10 @@ public class CloudControllerServiceImpl implements CloudControllerService {
private ThreadPoolExecutor executor;
public CloudControllerServiceImpl() {
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
executor = StratosThreadPool.getExecutorService("cloud.controller.instance.manager.thread" +
- ".pool", 20, 50);
+ ".pool", 50/divisor, 50);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberInformationPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberInformationPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberInformationPublisher.java
index 0d38967..fbba1c6 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberInformationPublisher.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberInformationPublisher.java
@@ -27,6 +27,7 @@ import org.apache.stratos.cloud.controller.domain.IaasProvider;
import org.apache.stratos.cloud.controller.domain.InstanceMetadata;
import org.apache.stratos.cloud.controller.domain.MemberContext;
import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.threading.StratosThreadPool;
import org.wso2.carbon.databridge.commons.Attribute;
import org.wso2.carbon.databridge.commons.AttributeType;
@@ -52,8 +53,11 @@ public class DASMemberInformationPublisher extends MemberInformationPublisher {
private DASMemberInformationPublisher() {
super(createStreamDefinition(), DAS_THRIFT_CLIENT_NAME);
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
executor = StratosThreadPool.getExecutorService(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_ID,
- ((int)Math.ceil(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_SIZE/3)), CloudControllerConstants
+ ((int)Math.ceil(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_SIZE/divisor)),
+ CloudControllerConstants
.STATS_PUBLISHER_THREAD_POOL_SIZE);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberStatusPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberStatusPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberStatusPublisher.java
index f28d2c8..a9f1cb7 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberStatusPublisher.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberStatusPublisher.java
@@ -22,6 +22,7 @@ package org.apache.stratos.cloud.controller.statistics.publisher;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.threading.StratosThreadPool;
import org.wso2.carbon.databridge.commons.Attribute;
import org.wso2.carbon.databridge.commons.AttributeType;
@@ -45,8 +46,11 @@ public class DASMemberStatusPublisher extends MemberStatusPublisher {
private DASMemberStatusPublisher() {
super(createStreamDefinition(), DAS_THRIFT_CLIENT_NAME);
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
executor = StratosThreadPool.getExecutorService(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_ID,
- ((int)Math.ceil(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_SIZE/3)), CloudControllerConstants
+ ((int)Math.ceil(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_SIZE/divisor)),
+ CloudControllerConstants
.STATS_PUBLISHER_THREAD_POOL_SIZE);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
index 29facf0..bc957c0 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
@@ -349,4 +349,6 @@ public final class CloudControllerConstants {
public static final String IAAS_TYPE_EC2 = "ec2";
public static final String INSTANCE_CTXT_EC2_REGION = "EC2_REGION";
public static final String INSTANCE_CTXT_EC2_AVAILABILITY_ZONE = "EC2_AVAILABILITY_ZONE";
+
+ public static final String CC_THREAD_POOL_SIZE = "cc.thread.pool.size";
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/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 143de54..83495f9 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
@@ -212,5 +212,7 @@ public class StratosConstants {
public static final String NOT_DEFINED = "not-defined";
public static final String CLUSTER_INSTANCE_ID = "cluster.instance.id";
+ public static final String THREAD_POOL_INITIAL_MIN_MAX_RATIO = "thread.pool.initial.min.max.ratio";
+ public static final int DEFAULT_THREAD_POOL_MIN_MAX_RATIO = 3;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/GracefulThreadPoolTerminator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/GracefulThreadPoolTerminator.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/GracefulThreadPoolTerminator.java
index 2ccfc45..ce6c12c 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/GracefulThreadPoolTerminator.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/GracefulThreadPoolTerminator.java
@@ -41,20 +41,26 @@ public class GracefulThreadPoolTerminator implements Callable<String> {
@Override
public String call() {
// try to shut down gracefully
- log.info("Attempting to gracefully shut down thread pool " + threadPoolId);
+ if(log.isDebugEnabled()) {
+ log.debug("Attempting to gracefully shut down thread pool " + threadPoolId);
+ }
executor.shutdown();
// wait 10 secs till terminated
try {
if (!executor.awaitTermination(10, TimeUnit.SECONDS)) {
- log.info("Thread Pool [id] " + threadPoolId + " did not finish all tasks before " +
- "timeout, forcefully shutting down");
+ if(log.isDebugEnabled()) {
+ log.debug("Thread Pool [id] " + threadPoolId + " did not finish all tasks before " +
+ "timeout, forcefully shutting down");
+ }
executor.shutdownNow();
}
} catch (InterruptedException e) {
// interrupted, shutdown now
executor.shutdownNow();
}
- log.info("Successfully shut down thread pool " + threadPoolId);
+ if (log.isDebugEnabled()) {
+ log.debug("Successfully shut down thread pool " + threadPoolId);
+ }
return threadPoolId;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
index 1f4e5c8..0e1ffa9 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
@@ -52,12 +52,12 @@ public class StratosThreadPool {
if (executor == null) {
synchronized (executorServiceMapLock) {
if (executor == null) {
- int taskQueueSize = initialSize > 3 ? (int)Math.ceil(initialSize/3) : 1;
+ int taskQueueSize = initialSize > 4 ? (int)Math.ceil(initialSize/4) : 1;
executor = new ThreadPoolExecutor(initialSize, maxSize, 60L, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>(taskQueueSize), new StratosThreadFactory(identifier));
executorMap.put(identifier, executor);
log.info(String.format("Thread pool created: [type] Executor [id] %s " +
- "[initial size] %d [max size] %d", identifier, initialSize, maxSize));
+ "[initial size] %d [max size] %d [queue length] %d", identifier, initialSize, maxSize, taskQueueSize));
}
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/statistics/LoadBalancerStatisticsExecutor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/statistics/LoadBalancerStatisticsExecutor.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/statistics/LoadBalancerStatisticsExecutor.java
index 486b98b..d31b702 100644
--- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/statistics/LoadBalancerStatisticsExecutor.java
+++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/statistics/LoadBalancerStatisticsExecutor.java
@@ -20,6 +20,7 @@ package org.apache.stratos.load.balancer.statistics;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.threading.StratosThreadPool;
import org.apache.stratos.load.balancer.util.LoadBalancerConstants;
@@ -38,8 +39,11 @@ public class LoadBalancerStatisticsExecutor {
private ThreadPoolExecutor executor;
private LoadBalancerStatisticsExecutor() {
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
executor = StratosThreadPool.getExecutorService(LoadBalancerConstants.LOAD_BALANCER_THREAD_POOL_ID,
- ((int)Math.ceil(LoadBalancerConstants.LOAD_BALANCER_DEFAULT_THREAD_POOL_SIZE/3)), LoadBalancerConstants
+ ((int)Math.ceil(LoadBalancerConstants.LOAD_BALANCER_DEFAULT_THREAD_POOL_SIZE/divisor)),
+ LoadBalancerConstants
.LOAD_BALANCER_DEFAULT_THREAD_POOL_SIZE);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
index 1b48603..dab0540 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
@@ -19,9 +19,11 @@
package org.apache.stratos.manager.internal;
import com.hazelcast.core.HazelcastInstance;
+import org.apache.commons.lang.IncompleteArgumentException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.common.Component;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.services.ComponentStartUpSynchronizer;
import org.apache.stratos.common.services.DistributedObjectProvider;
import org.apache.stratos.common.threading.StratosThreadPool;
@@ -36,6 +38,7 @@ import org.apache.stratos.manager.messaging.receiver.StratosManagerTopologyEvent
import org.apache.stratos.manager.user.management.TenantUserRoleManager;
import org.apache.stratos.manager.user.management.exception.UserManagerException;
import org.apache.stratos.common.util.CartridgeConfigFileReader;
+import org.apache.stratos.manager.utils.StratosManagerConstants;
import org.apache.stratos.manager.utils.UserRoleCreator;
import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
import org.apache.stratos.messaging.util.MessagingUtil;
@@ -98,8 +101,14 @@ public class StratosManagerServiceComponent {
log.debug("Activating StratosManagerServiceComponent...");
}
try {
- executor = StratosThreadPool.getExecutorService(THREAD_POOL_ID, ((int)Math.ceil(THREAD_POOL_SIZE/3))
- , THREAD_POOL_SIZE);
+ Integer smThreadPoolSize = Integer.getInteger(StratosManagerConstants.SM_THREAD_POOL_SIZE);
+ if (smThreadPoolSize == null || smThreadPoolSize <= 0) {
+ smThreadPoolSize = THREAD_POOL_SIZE;
+ }
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
+ executor = StratosThreadPool.getExecutorService(THREAD_POOL_ID, ((int)Math.ceil(smThreadPoolSize/divisor))
+ , smThreadPoolSize);
scheduler = StratosThreadPool
.getScheduledExecutorService(SCHEDULER_THREAD_POOL_ID, SCHEDULER_THREAD_POOL_SIZE);
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/StratosManagerConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/StratosManagerConstants.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/StratosManagerConstants.java
index 171f689..0929506 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/StratosManagerConstants.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/StratosManagerConstants.java
@@ -24,9 +24,5 @@ package org.apache.stratos.manager.utils;
*/
public class StratosManagerConstants {
- public static final String DEFAULT_CRON = "1 * * * * ? *";
- public static final String TENANT_SYNC_TASK_TYPE = "TENANT_SYNC_TASK_TYPE";
- public static final String TENANT_SYNC_TASK_NAME = "TENANT_SYNC_TASK";
- public static final String APPLICATION_SIGNUP_SYNC_TASK_TYPE = "APPLICATION_SIGNUP_SYNC_TASK_TYPE";
- public static final String APPLICATION_SIGNUP_SYNC_TASK_NAME = "APPLICATION_SIGNUP_SYNC_TASK";
+ public static final String SM_THREAD_POOL_SIZE = "sm.thread.pool.size";
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/StratosEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/StratosEventReceiver.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/StratosEventReceiver.java
index 0c17efb..34c0b28 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/StratosEventReceiver.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/StratosEventReceiver.java
@@ -22,6 +22,7 @@ package org.apache.stratos.messaging.message.receiver;
import java.util.concurrent.ThreadPoolExecutor;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.threading.StratosThreadPool;
import org.apache.stratos.messaging.listener.EventListener;
@@ -63,7 +64,9 @@ public abstract class StratosEventReceiver {
public StratosEventReceiver () {
this.threadPoolId = STRATOS_EVENT_RECEIEVER_THREAD_POOL_ID;
- this.executor = StratosThreadPool.getExecutorService(threadPoolId, (int)Math.ceil(threadPoolSize/3),
+ Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+ int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
+ this.executor = StratosThreadPool.getExecutorService(threadPoolId, (int)Math.ceil(threadPoolSize/divisor),
threadPoolSize);
}