Repository: stratos Updated Branches: refs/heads/4.1.0-test 5e3663561 -> baa13a0bb
Improve mincheck tp spawn min instances at once Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/e0d4c2e0 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e0d4c2e0 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e0d4c2e0 Branch: refs/heads/4.1.0-test Commit: e0d4c2e04a3abfced902827ed2aa3ac2828628c9 Parents: 5e36635 Author: Lahiru Sandaruwan <[email protected]> Authored: Thu Dec 11 07:48:19 2014 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Thu Dec 11 07:48:19 2014 +0530 ---------------------------------------------------------------------- .../src/main/conf/drools/mincheck.drl | 42 +++++++++++++++----- 1 file changed, 33 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/e0d4c2e0/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl ---------------------------------------------------------------------- diff --git a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl index c8a5df8..29b9793 100755 --- a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl +++ b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl @@ -53,8 +53,8 @@ global java.lang.String algorithmName; rule "Minimum Rule" dialect "mvel" - when - clusterInstanceContext : ClusterInstanceContext () + when + clusterInstanceContext : ClusterInstanceContext () autoscaleAlgorithm : AutoscaleAlgorithm() from delegator.getAutoscaleAlgorithm(algorithmName) @@ -62,16 +62,40 @@ dialect "mvel" eval(log.debug("[min-check] [network-partition] " + clusterInstanceContext.getNetworkPartitionId() + " [cluster-instance] " + clusterInstanceContext.getId() + " Non terminated member count: " + clusterInstanceContext.getNonTerminatedMemberCount())) eval(log.debug("[min-check] [network-partition] " + clusterInstanceContext.getNetworkPartitionId() + " [cluster-instance] " + clusterInstanceContext.getId() + " Minimum member count: " + clusterInstanceContext.getMinInstanceCount())) - eval ( (isPrimary && (primaryMemberCount < clusterInstanceContext.getMinInstanceCount() )) || ( !isPrimary && (clusterInstanceContext.getNonTerminatedMemberCount() < clusterInstanceContext.getMinInstanceCount() )) ) + eval ( (isPrimary && (primaryMemberCount < clusterInstanceContext.getMinInstanceCount())) || ( !isPrimary && (clusterInstanceContext.getNonTerminatedMemberCount() < clusterInstanceContext.getMinInstanceCount())) ) then - ClusterLevelPartitionContext partitionContext = (ClusterLevelPartitionContext)autoscaleAlgorithm.getNextScaleUpPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray()); - if (isPrimary){ - log.debug("[min-check] true [primary] true [primary member count] " + primaryMemberCount); - } else{ - log.debug("[min-check] true [primary] false"); + int additionalInstances = 0; + if(isPrimary){ + + additionalInstances = clusterInstanceContext.getMinInstanceCount() - primaryMemberCount; + log.debug("[min-check] true [primary] true [primary member count] " + primaryMemberCount); + } else { + + additionalInstances = clusterInstanceContext.getMinInstanceCount() - clusterInstanceContext.getNonTerminatedMemberCount(); + log.debug("[min-check] true [primary] false [non terminated member count] " + clusterInstanceContext.getNonTerminatedMemberCount()); } - delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary); + int count = 0; + boolean partitionsAvailable = true; + while(count != additionalInstances && partitionsAvailable){ + + ClusterLevelPartitionContext partitionContext = (ClusterLevelPartitionContext)autoscaleAlgorithm.getNextScaleUpPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray()); + if(partitionContext != null){ + + if (isPrimary){ + } else{ + } + delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary); + + log.info("[min-check] Partition available, hence trying to spawn an instance to fulfil minimum count!" ); + log.debug("[min-check] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId ); + delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary); + count++; + } else { + + partitionsAvailable = false; + } + } end
