Updated Branches: refs/heads/master 803e58cd8 -> 22ff44032
Introduce new member state to keep termination pending members Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/64e500fe Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/64e500fe Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/64e500fe Branch: refs/heads/master Commit: 64e500febe104b73f4e270477270c7b01408c2c1 Parents: 0ca6239 Author: Lahiru Sandaruwan <[email protected]> Authored: Tue Jan 14 15:15:54 2014 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Tue Jan 14 15:15:54 2014 +0530 ---------------------------------------------------------------------- .../autoscaler/NetworkPartitionContext.java | 7 + .../stratos/autoscaler/PartitionContext.java | 129 ++++++++++++++----- .../autoscaler/algorithm/OneAfterAnother.java | 6 +- .../autoscaler/algorithm/RoundRobin.java | 6 +- .../cloud/controller/CloudControllerClient.java | 2 +- .../topology/AutoscalerTopologyReceiver.java | 13 +- .../autoscaler/rule/RuleTasksDelegator.java | 8 +- .../stratos/autoscaler/util/AutoscalerUtil.java | 8 +- .../stratos/autoscaler/TestMinimumRule.java | 2 +- .../receiver/topology/TopologyManager.java | 2 +- .../distribution/src/main/conf/scaling.drl | 2 +- .../distribution/src/main/conf/terminateall.drl | 2 +- 12 files changed, 133 insertions(+), 54 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java index 6e36da3..3e089cf 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java @@ -477,6 +477,13 @@ public class NetworkPartitionContext implements Serializable{ return partitions; } + public int getNonTerminatedMemberCountOfPartition(String partitionId) { + if(partitionCtxts.containsKey(partitionId)){ + return getPartitionCtxt(partitionId).getNonTerminatedMemberCount(); + } + return 0; + } + // public void setPartitions(Partition[] partitions) { // this.partitions = partitions; // for (Partition partition: partitions){ http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java index 1670ea7..3ea8d80 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java @@ -48,7 +48,7 @@ public class PartitionContext implements Serializable{ private String serviceName; private String networkPartitionId; private Partition partition; - private int currentActiveMemberCount = 0; +// private int currentActiveMemberCount = 0; private int minimumMemberCount = 0; // properties @@ -63,15 +63,24 @@ public class PartitionContext implements Serializable{ private List<String> obsoletedMembers; // Contains the members that CEP notified as faulty members. - private List<String> faultyMembers; +// private List<String> faultyMembers; // active members private List<MemberContext> activeMembers; + // termination pending members, member is added to this when Autoscaler send grace fully shut down event + private List<MemberContext> terminationPendingMembers; + + //Keep statistics come from CEP private Map<String, MemberStatsContext> memberStatsContexts; - + private int nonTerminatedMemberCount; +// private int totalMemberCount; + // for the use of tests public PartitionContext() { + + this.activeMembers = new ArrayList<MemberContext>(); + this.terminationPendingMembers = new ArrayList<MemberContext>(); } public PartitionContext(Partition partition) { @@ -80,8 +89,9 @@ public class PartitionContext implements Serializable{ this.partitionId = partition.getId(); this.pendingMembers = new ArrayList<MemberContext>(); this.activeMembers = new ArrayList<MemberContext>(); - this.obsoletedMembers = new CopyOnWriteArrayList<String>(); - this.faultyMembers = new CopyOnWriteArrayList<String>(); + this.terminationPendingMembers = new ArrayList<MemberContext>(); + this.obsoletedMembers = new CopyOnWriteArrayList<String>(); +// this.faultyMembers = new CopyOnWriteArrayList<String>(); memberStatsContexts = new ConcurrentHashMap<String, MemberStatsContext>(); Thread th = new Thread(new PendingMemberWatcher(this)); th.start(); @@ -109,19 +119,19 @@ public class PartitionContext implements Serializable{ public void setPartitionId(String partitionId) { this.partitionId = partitionId; } - public int getTotalMemberCount() { - // live count + pending count - return currentActiveMemberCount + pendingMembers.size(); - } - - public void incrementCurrentActiveMemberCount(int count) { +// public int getTotalMemberCount() { +// // live count + pending count +// return currentActiveMemberCount + pendingMembers.size(); +// } - this.currentActiveMemberCount += count; - } +// public void incrementCurrentActiveMemberCount(int count) { +// +// this.currentActiveMemberCount += count; +// } - public void decrementCurrentActiveMemberCount(int count) { - this.currentActiveMemberCount -= count; - } +// public void decrementCurrentActiveMemberCount(int count) { +// this.currentActiveMemberCount -= count; +// } public int getMinimumMemberCount() { return minimumMemberCount; @@ -143,7 +153,7 @@ public class PartitionContext implements Serializable{ this.pendingMembers.add(ctxt); } - public void removePendingMember(String memberId) { + public void movePendingMemberToActiveMembers(String memberId) { if (memberId == null) { return; } @@ -161,8 +171,35 @@ public class PartitionContext implements Serializable{ // add to the activated list this.activeMembers.add(pendingMember); if (log.isDebugEnabled()) { - log.debug("Pending member is removed and added to the " + - "activated member list. Id: "+memberId); + log.debug(String.format("Pending member is removed and added to the " + + "activated member list. [Member Id] %s",memberId)); + } + break; + } + } + } + + + public void moveActiveMemberToTerminationPendingMembers(String memberId) { + if (memberId == null) { + return; + } + for (Iterator<MemberContext> iterator = activeMembers.listIterator(); + iterator.hasNext();) { + MemberContext activeMember = (MemberContext) iterator.next(); + if(activeMember == null) { + iterator.remove(); + continue; + } + if(memberId.equals(activeMember.getMemberId())){ + // member is activated + // remove from pending list + iterator.remove(); + // add to the activated list + this.terminationPendingMembers.add(activeMember); + if (log.isDebugEnabled()) { + log.debug(String.format("Active member is removed and added to the " + + "termination pending member list. [Member Id] %s", memberId)); } break; } @@ -176,6 +213,18 @@ public class PartitionContext implements Serializable{ public void removeActiveMember(MemberContext ctxt) { this.activeMembers.remove(ctxt); } + + public boolean removeTerminationPendingMember(String memberId) { + boolean terminationPendingMemberAvailable = false; + for (MemberContext memberContext: activeMembers){ + if(memberContext.getMemberId().equals(memberId)){ + terminationPendingMemberAvailable =true; + activeMembers.remove(memberContext); + break; + } + } + return terminationPendingMemberAvailable; + } public void addObsoleteMember(String memberId) { this.obsoletedMembers.add(memberId); @@ -184,18 +233,18 @@ public class PartitionContext implements Serializable{ public boolean removeObsoleteMember(String memberId) { return this.obsoletedMembers.remove(memberId); } - - public void addFaultyMember(String memberId) { - this.faultyMembers.add(memberId); - } - - public boolean removeFaultyMember(String memberId) { - return this.faultyMembers.remove(memberId); - } - - public List<String> getFaultyMembers() { - return this.faultyMembers; - } +// +// public void addFaultyMember(String memberId) { +// this.faultyMembers.add(memberId); +// } +// +// public boolean removeFaultyMember(String memberId) { +// return this.faultyMembers.remove(memberId); +// } +// +// public List<String> getFaultyMembers() { +// return this.faultyMembers; +// } public long getExpiryTime() { return expiryTime; @@ -263,6 +312,24 @@ public class PartitionContext implements Serializable{ this.serviceName = serviceName; } + public List<MemberContext> getTerminationPendingMembers() { + return terminationPendingMembers; + } + + public void setTerminationPendingMembers(List<MemberContext> terminationPendingMembers) { + this.terminationPendingMembers = terminationPendingMembers; + } + + public int getTotalMemberCount() { + + return activeMembers.size() + pendingMembers.size() + terminationPendingMembers.size(); + } + + public int getNonTerminatedMemberCount() { + return activeMembers.size() + pendingMembers.size(); + } + + private class PendingMemberWatcher implements Runnable { private PartitionContext ctxt; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java index 7d7e25c..636b372 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java @@ -60,7 +60,8 @@ public class OneAfterAnother implements AutoscaleAlgorithm { Partition currentPartition = (Partition) partitions.get(currentPartitionIndex); String currentPartitionId = currentPartition.getId(); - if (networkPartitionContext.getMemberCountOfPartition(currentPartitionId) < currentPartition.getPartitionMax()) { + if (networkPartitionContext.getNonTerminatedMemberCountOfPartition(currentPartitionId) + < currentPartition.getPartitionMax()) { // current partition is free if (log.isDebugEnabled()) log.debug(String.format("A free space found for scale up in partition %s [current] %s [max] %s", @@ -100,7 +101,8 @@ public class OneAfterAnother implements AutoscaleAlgorithm { String currentPartitionId = currentPartition.getId(); // has more than minimum instances. - if (networkPartitionContext.getMemberCountOfPartition(currentPartitionId) > currentPartition.getPartitionMin()) { + if (networkPartitionContext.getNonTerminatedMemberCountOfPartition(currentPartitionId) > + currentPartition.getPartitionMin()) { // current partition is free if (log.isDebugEnabled()) log.debug(String.format("A free space found for scale down in partition %s [current] %s [min] %s", http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java index 48912c8..a24eb06 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java @@ -55,7 +55,8 @@ public class RoundRobin implements AutoscaleAlgorithm{ int nextPartitionIndex = currentPartitionIndex == noOfPartitions - 1 ? 0 : currentPartitionIndex+1; networkPartitionContext.setCurrentPartitionIndex(nextPartitionIndex); - if(networkPartitionContext.getMemberCountOfPartition(currentPartitionId) < currentPartition.getPartitionMax()){ + if(networkPartitionContext.getNonTerminatedMemberCountOfPartition(currentPartitionId) + < currentPartition.getPartitionMax()){ // current partition is free if(log.isDebugEnabled()) log.debug("Free space found in partition " + currentPartition.getId()); @@ -102,7 +103,8 @@ public class RoundRobin implements AutoscaleAlgorithm{ String currentPartitionId = currentPartition.getId(); // has more than minimum instances. - if (networkPartitionContext.getMemberCountOfPartition(currentPartitionId) > currentPartition.getPartitionMin()) { + if (networkPartitionContext.getNonTerminatedMemberCountOfPartition(currentPartitionId) > + currentPartition.getPartitionMin()) { // current partition is free if (log.isDebugEnabled()) { log.debug("Returning partition for scaling down " + http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java index 061b3be..3104c33 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java @@ -131,7 +131,7 @@ public class CloudControllerClient { clusterId, partition.getId(), lbClusterId, networkPartitionId)); } - org.apache.stratos.cloud.controller.pojo.MemberContext member = new org.apache.stratos.cloud.controller.pojo.MemberContext(); + MemberContext member = new MemberContext(); member.setClusterId(clusterId); member.setPartition(partition); member.setLbClusterId(lbClusterId); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java index 6aa34df..9906a96 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java @@ -200,11 +200,16 @@ public class AutoscalerTopologyReceiver implements Runnable { PartitionContext partitionContext = networkPartitionContext.getPartitionCtxt(partitionId); partitionContext.removeMemberStatsContext(e.getMemberId()); - partitionContext.decrementCurrentActiveMemberCount(1); + if(!partitionContext.removeTerminationPendingMember(e.getMemberId())){ - if(log.isInfoEnabled()){ + if(log.isErrorEnabled()){ + log.error(String.format("Member is not available in termination pending list: [member] %s", e.getMemberId())); + } + } else if(log.isInfoEnabled()){ log.info(String.format("Member stat context has been removed: [member] %s", e.getMemberId())); } +// partitionContext.decrementCurrentActiveMemberCount(1); + } finally { TopologyManager.releaseReadLock(); @@ -240,8 +245,8 @@ public class AutoscalerTopologyReceiver implements Runnable { if(log.isInfoEnabled()){ log.info(String.format("Member stat context has been added: [member] %s", memberId)); } - partitionContext.incrementCurrentActiveMemberCount(1); - partitionContext.removePendingMember(memberId); +// partitionContext.incrementCurrentActiveMemberCount(1); + partitionContext.movePendingMemberToActiveMembers(memberId); } finally{ http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java index c92955c..063c2c0 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java @@ -11,7 +11,6 @@ import org.apache.stratos.autoscaler.algorithm.RoundRobin; import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; import org.apache.stratos.autoscaler.client.cloud.controller.InstanceNotificationClient; import org.apache.stratos.autoscaler.partition.PartitionManager; -import org.apache.stratos.cloud.controller.deployment.partition.Partition; import org.apache.stratos.cloud.controller.pojo.MemberContext; /** @@ -102,14 +101,11 @@ public class RuleTasksDelegator { return lbClusterId; } - public void delegateTerminate(Partition partition, String clusterId) { - log.info("terminate from partition " + partition.getId() + " cluster " + clusterId ); - } - - public void delegateTerminate(String memberId) { + public void delegateTerminate(PartitionContext partitionContext, String memberId) { try { //calling SM to send the instance notification event. InstanceNotificationClient.getInstance().sendMemberCleanupEvent(memberId); + partitionContext.moveActiveMemberToTerminationPendingMembers(memberId); //CloudControllerClient.getInstance().terminate(memberId); } catch (Throwable e) { log.error("Cannot terminate instance", e); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java index e030156..c368ea4 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java @@ -134,14 +134,14 @@ public class AutoscalerUtil { if(MemberStatus.Activated.equals(member.getStatus())){ partitionContext.addActiveMember(memberContext); // networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1); - partitionContext.incrementCurrentActiveMemberCount(1); +// partitionContext.incrementCurrentActiveMemberCount(1); } else if(MemberStatus.Created.equals(member.getStatus()) || MemberStatus.Starting.equals(member.getStatus())){ partitionContext.addPendingMember(memberContext); // networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1); } else if(MemberStatus.Suspended.equals(member.getStatus())){ - partitionContext.addFaultyMember(memberId); +// partitionContext.addFaultyMember(memberId); } partitionContext.addMemberStatsContext(new MemberStatsContext(memberId)); if(log.isInfoEnabled()){ @@ -238,13 +238,13 @@ public class AutoscalerUtil { if (MemberStatus.Activated.equals(member.getStatus())) { partitionContext.addActiveMember(memberContext); // networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1); - partitionContext.incrementCurrentActiveMemberCount(1); +// partitionContext.incrementCurrentActiveMemberCount(1); } else if (MemberStatus.Created.equals(member.getStatus()) || MemberStatus.Starting.equals(member.getStatus())) { partitionContext.addPendingMember(memberContext); // networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1); } else if (MemberStatus.Suspended.equals(member.getStatus())) { - partitionContext.addFaultyMember(memberId); +// partitionContext.addFaultyMember(memberId); } partitionContext.addMemberStatsContext(new MemberStatsContext(memberId)); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java index 79249e4..ecb6c3d 100644 --- a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java +++ b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java @@ -60,7 +60,7 @@ public class TestMinimumRule { kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); } - + @Test public void testMinimumRule() { if(kbase == null) { http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java index dafa12f..5df66bd 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java @@ -67,7 +67,7 @@ public class TopologyManager { writeLock.unlock(); } - public static synchronized Topology getTopology() { + public static Topology getTopology() { if (topology == null) { synchronized (TopologyManager.class){ if (topology == null) { http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/products/autoscaler/modules/distribution/src/main/conf/scaling.drl ---------------------------------------------------------------------- diff --git a/products/autoscaler/modules/distribution/src/main/conf/scaling.drl b/products/autoscaler/modules/distribution/src/main/conf/scaling.drl index 62136c4..7f95170 100644 --- a/products/autoscaler/modules/distribution/src/main/conf/scaling.drl +++ b/products/autoscaler/modules/distribution/src/main/conf/scaling.drl @@ -160,7 +160,7 @@ dialect "mvel" log.debug("[scale-down] " + " [partition] " + partition.getId() + " [cluster] " + clusterId + " Member with lowest overall load: " + selectedMemberStatsContext.getMemberId()); - $delegator.delegateTerminate(selectedMemberStatsContext.getMemberId()); + $delegator.delegateTerminate(partitionContext, selectedMemberStatsContext.getMemberId()); } } } else{ http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/products/autoscaler/modules/distribution/src/main/conf/terminateall.drl ---------------------------------------------------------------------- diff --git a/products/autoscaler/modules/distribution/src/main/conf/terminateall.drl b/products/autoscaler/modules/distribution/src/main/conf/terminateall.drl index 7150eca..75c26fc 100644 --- a/products/autoscaler/modules/distribution/src/main/conf/terminateall.drl +++ b/products/autoscaler/modules/distribution/src/main/conf/terminateall.drl @@ -37,7 +37,7 @@ dialect "mvel" eval(log.debug("[terminate all] [network-partition] " + $ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId() + " Member id: " + memberId)) then - $delegator.delegateTerminate(memberId); + $delegator.delegateTerminate($ctxt, memberId); end
