You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2014/12/12 11:11:27 UTC
[25/50] stratos git commit: fixing undeployment issue by removing the
instances
fixing undeployment issue by removing the instances
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/196336cb
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/196336cb
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/196336cb
Branch: refs/heads/master
Commit: 196336cbee7254f65b2c6ae1a1b0f900f4f18b17
Parents: dc5ae90
Author: reka <rt...@gmail.com>
Authored: Thu Dec 11 14:19:04 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 11 19:24:11 2014 +0530
----------------------------------------------------------------------
.../applications/topic/ApplicationBuilder.java | 2 +-
.../topic/ApplicationsEventPublisher.java | 4 +-
.../partition/ClusterLevelPartitionContext.java | 9 +++++
.../AutoscalerTopologyEventReceiver.java | 1 +
.../monitor/cluster/VMClusterMonitor.java | 20 ++++++----
.../monitor/component/ApplicationMonitor.java | 2 +-
.../monitor/component/GroupMonitor.java | 27 ++++++++-----
.../group/GroupStatusActiveProcessor.java | 36 ++++++++----------
.../group/GroupStatusTerminatedProcessor.java | 33 ++++++++--------
.../group/GroupStatusTerminatingProcessor.java | 40 +++++++++-----------
.../ApplicationInstanceTerminatedEvent.java | 11 +++---
...licationInstanceCreatedMessageProcessor.java | 3 +-
...ationInstanceTerminatedMessageProcessor.java | 11 +++++-
.../ClusterInstanceTerminatedProcessor.java | 3 ++
14 files changed, 113 insertions(+), 89 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index d46a232..1194a6f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -304,7 +304,7 @@ public class ApplicationBuilder {
//ApplicationHolder.removeApplication(appId);
log.info("Application run time is removed: [application-id] " + appId);
}
- ApplicationsEventPublisher.sendApplicationInstanceTerminatedEvent(appId, clusterData);
+ ApplicationsEventPublisher.sendApplicationInstanceTerminatedEvent(appId, instanceId);
} else {
log.warn(String.format("Application state transition is not valid: [application-id] %s " +
" [current-status] %s [status-requested] %s", appId,
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
index 52e8c55..c03a92b 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
@@ -119,12 +119,12 @@ public class ApplicationsEventPublisher {
publishEvent(applicationTerminatingEvent);
}
- public static void sendApplicationInstanceTerminatedEvent(String appId, Set<ClusterDataHolder> clusterData) {
+ public static void sendApplicationInstanceTerminatedEvent(String appId, String instanceId) {
if (log.isInfoEnabled()) {
log.info("Publishing Application terminated event for [application]: " + appId);
}
ApplicationInstanceTerminatedEvent applicationTerminatedEvent =
- new ApplicationInstanceTerminatedEvent(appId, clusterData);
+ new ApplicationInstanceTerminatedEvent(appId, instanceId);
publishEvent(applicationTerminatedEvent);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
index 663f301..f3f5046 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
@@ -539,6 +539,15 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
return null;
}
+ public MemberContext getObsoleteMember(String memberId) {
+ for (MemberContext memberContext : obsoletedMembers.values()) {
+ if (memberId.equals(memberContext.getMemberId())) {
+ return memberContext;
+ }
+ }
+ return null;
+ }
+
public long getTerminationPendingMemberExpiryTime() {
return terminationPendingMemberExpiryTime;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
index 53d60b7..865cfb7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -321,6 +321,7 @@ public class AutoscalerTopologyEventReceiver {
@Override
protected void onEvent(Event event) {
try {
+ log.info("[MemberReadyToShutdownEvent] Received: " + event.getClass());
MemberReadyToShutdownEvent memberReadyToShutdownEvent = (MemberReadyToShutdownEvent) event;
String clusterId = memberReadyToShutdownEvent.getClusterId();
AutoscalerContext asCtx = AutoscalerContext.getInstance();
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
index cf1e090..f208edc 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
@@ -919,15 +919,19 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
//move member to pending termination list
if (partitionCtxt.getPendingTerminationMember(memberId) != null) {
partitionCtxt.movePendingTerminationMemberToObsoleteMembers(memberId);
- } else if (partitionCtxt.getPendingTerminationMember(memberId) != null) {
- // add member to obsolete list since the member is shutdown ready member
- partitionCtxt.movePendingTerminationMemberToObsoleteMembers(memberId);
- }
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Member is removed from the pending termination members " +
+ "and moved to obsolete list: [member] %s " +
+ "[partition] %s [cluster] %s ", memberId, partitionId, clusterId));
+ }
+ } else if(partitionCtxt.getObsoleteMember(memberId) != null) {
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Member is in obsolete list: [member] %s " +
+ "[partition] %s [cluster] %s ", memberId, partitionId, clusterId));
+ }
+ } //TODO else part
+
- if (log.isInfoEnabled()) {
- log.info(String.format("Member is terminated and removed from the active members list: [member] %s " +
- "[partition] %s [cluster] %s ", memberId, partitionId, clusterId));
- }
} catch (Exception e) {
String msg = "Error processing event " + e.getLocalizedMessage();
log.error(msg, e);
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/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 f8f2e82..9d0a943 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
@@ -151,7 +151,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
ApplicationInstance instance = (ApplicationInstance) instanceIdToInstanceMap.get(instanceId);
if (instance != null) {
- if (instance.getStatus() == ApplicationStatus.Terminating) {
+ if (this.isTerminating()) {
ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().process(this.id,
appId, instanceId);
} else {
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/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 10bcec1..15aa733 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
@@ -173,9 +173,12 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
@Override
public void onChildStatusEvent(MonitorStatusEvent statusEvent) {
- String childId = statusEvent.getId();
- String instanceId = statusEvent.getInstanceId();
- LifeCycleState status1 = statusEvent.getStatus();
+
+ String childId = statusEvent.getId();
+ String instanceId = statusEvent.getInstanceId();
+ LifeCycleState status1 = statusEvent.getStatus();
+ String id = this.id;
+
//Events coming from parent are In_Active(in faulty detection), Scaling events, termination
if (status1 == ClusterStatus.Active || status1 == GroupStatus.Active) {
@@ -183,34 +186,40 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
} else if (status1 == ClusterStatus.Inactive || status1 == GroupStatus.Inactive) {
//handling restart of stratos
- if (!this.aliasToActiveMonitorsMap.get(childId).hasStartupDependents()) {
+ if (!aliasToActiveMonitorsMap.get(childId).hasStartupDependents()) {
onChildActivatedEvent(childId, instanceId);
} else {
- this.markInstanceAsInactive(childId, instanceId);
+ markInstanceAsInactive(childId, instanceId);
onChildInactiveEvent(childId, instanceId);
}
} else if (status1 == ClusterStatus.Terminating || status1 == GroupStatus.Terminating) {
- //mark the child monitor as inActive in the map
+ //mark the child monitor as inactive in the map
markInstanceAsTerminating(childId, instanceId);
} else if (status1 == ClusterStatus.Terminated || status1 == GroupStatus.Terminated) {
//Check whether all dependent goes Terminated and then start them in parallel.
removeInstanceFromFromInactiveMap(childId, instanceId);
removeInstanceFromFromTerminatingMap(childId, instanceId);
- GroupInstance instance = (GroupInstance) this.instanceIdToInstanceMap.get(instanceId);
+
+ GroupInstance instance = (GroupInstance) instanceIdToInstanceMap.get(instanceId);
if (instance != null) {
if (instance.getStatus() == GroupStatus.Terminating || instance.getStatus() == GroupStatus.Terminated) {
- ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().process(this.id,
+ ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().process(id,
appId, instanceId);
} else {
onChildTerminatedEvent(childId, instanceId);
}
+ } else {
+ log.warn("The required instance cannot be found in the the [GroupMonitor] " +
+ id);
}
}
-
}
+
+
+
@Override
public void onParentStatusEvent(MonitorStatusEvent statusEvent)
throws MonitorNotFoundException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
index da2562a..69a6bfa 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
@@ -81,27 +81,23 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor {
groups = component.getAliasToGroupMap();
clusterData = component.getClusterDataMap();
- if (component.isGroupScalingEnabled()) {
-
- } else {
- if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) ||
- clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Active, instanceId) ||
- getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) &&
- getAllGroupInSameState(groups, GroupStatus.Active, instanceId)) {
- //send activation event
- if (component instanceof Application) {
- //send application activated event
- log.info("sending app activate: " + appId);
- ApplicationBuilder.handleApplicationInstanceActivatedEvent(appId, instanceId);
- return true;
- } else if (component instanceof Group) {
- //send activation to the parent
- log.info("sending group activate: " + component.getUniqueIdentifier());
- ApplicationBuilder.handleGroupInstanceActivatedEvent(appId, component.getUniqueIdentifier(), instanceId);
- return true;
- }
-
+ if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) ||
+ clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Active, instanceId) ||
+ getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) &&
+ getAllGroupInSameState(groups, GroupStatus.Active, instanceId)) {
+ //send activation event
+ if (component instanceof Application) {
+ //send application activated event
+ log.info("sending app activate: " + appId);
+ ApplicationBuilder.handleApplicationInstanceActivatedEvent(appId, instanceId);
+ return true;
+ } else if (component instanceof Group) {
+ //send activation to the parent
+ log.info("sending group activate: " + component.getUniqueIdentifier());
+ ApplicationBuilder.handleGroupInstanceActivatedEvent(appId, component.getUniqueIdentifier(), instanceId);
+ return true;
}
+
}
} finally {
ApplicationHolder.releaseWriteLock();
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
index b365d71..578037d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
@@ -39,6 +39,7 @@ public class GroupStatusTerminatedProcessor extends GroupStatusProcessor {
public void setNext(StatusProcessor nextProcessor) {
this.nextProcessor = (GroupStatusProcessor) nextProcessor;
}
+
@Override
public boolean process(String idOfComponent, String appId,
String instanceId) {
@@ -84,24 +85,20 @@ public class GroupStatusTerminatedProcessor extends GroupStatusProcessor {
groups = component.getAliasToGroupMap();
clusterData = component.getClusterDataMap();
- if (component.isGroupScalingEnabled()) {
-
- } else {
- if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) ||
- clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId) ||
- getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) &&
- getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId)) {
- //send the terminated event
- if (component instanceof Application) {
- log.info("sending app terminated: " + appId);
- ApplicationBuilder.handleApplicationInstanceTerminatedEvent(appId, instanceId);
- return true;
- } else if (component instanceof Group) {
- log.info("sending group terminated : " + component.getUniqueIdentifier());
- ApplicationBuilder.handleGroupInstanceTerminatedEvent(appId,
- component.getUniqueIdentifier(), instanceId);
- return true;
- }
+ if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) ||
+ clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId) ||
+ getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) &&
+ getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId)) {
+ //send the terminated event
+ if (component instanceof Application) {
+ log.info("sending app terminated: " + appId);
+ ApplicationBuilder.handleApplicationInstanceTerminatedEvent(appId, instanceId);
+ return true;
+ } else if (component instanceof Group) {
+ log.info("sending group terminated : " + component.getUniqueIdentifier());
+ ApplicationBuilder.handleGroupInstanceTerminatedEvent(appId,
+ component.getUniqueIdentifier(), instanceId);
+ return true;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
index 2fe0cd4..c536146 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
@@ -85,28 +85,24 @@ public class GroupStatusTerminatingProcessor extends GroupStatusProcessor {
groups = component.getAliasToGroupMap();
clusterData = component.getClusterDataMap();
- if (component.isGroupScalingEnabled()) {
-
- } else {
- if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) ||
- clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId) ||
- getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) &&
- getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId)) {
- //send the terminated event
- if (component instanceof Application) {
- log.info("sending app terminating for [application] " + appId + " and for " +
- " [instance] " + instanceId);
- ApplicationBuilder.handleApplicationInstanceTerminatedEvent(appId, instanceId);
- return true;
- } else if (component instanceof Group) {
- //send activation to the parent
- log.info("sending group terminating for [group] " +
- component.getUniqueIdentifier() + " and for [instance] "
- + instanceId);
- ApplicationBuilder.handleGroupTerminatingEvent(appId,
- component.getUniqueIdentifier(), instanceId);
- return true;
- }
+ if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) ||
+ clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId) ||
+ getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) &&
+ getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId)) {
+ //send the terminated event
+ if (component instanceof Application) {
+ log.info("sending app terminating for [application] " + appId + " and for " +
+ " [instance] " + instanceId);
+ ApplicationBuilder.handleApplicationInstanceTerminatedEvent(appId, instanceId);
+ return true;
+ } else if (component instanceof Group) {
+ //send activation to the parent
+ log.info("sending group terminating for [group] " +
+ component.getUniqueIdentifier() + " and for [instance] "
+ + instanceId);
+ ApplicationBuilder.handleGroupTerminatingEvent(appId,
+ component.getUniqueIdentifier(), instanceId);
+ return true;
}
}
} finally {
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceTerminatedEvent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceTerminatedEvent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceTerminatedEvent.java
index 1d05ba3..25def05 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceTerminatedEvent.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceTerminatedEvent.java
@@ -31,18 +31,17 @@ public class ApplicationInstanceTerminatedEvent extends Event implements Seriali
private static final long serialVersionUID = 2625412714611885089L;
private String appId;
- private Set<ClusterDataHolder> clusterData;
-
- public ApplicationInstanceTerminatedEvent(String appId, Set<ClusterDataHolder> clusterData) {
+ private String instanceId;
+ public ApplicationInstanceTerminatedEvent(String appId, String instanceId) {
this.appId = appId;
- this.clusterData = clusterData;
+ this.instanceId = instanceId;
}
public String getAppId() {
return appId;
}
- public Set<ClusterDataHolder> getClusterData() {
- return clusterData;
+ public String getInstanceId() {
+ return instanceId;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceCreatedMessageProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceCreatedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceCreatedMessageProcessor.java
index e92d581..fe6a3f9 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceCreatedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceCreatedMessageProcessor.java
@@ -95,7 +95,8 @@ public class ApplicationInstanceCreatedMessageProcessor extends MessageProcessor
}
// check if an Application instance with same name exists in applications instance
- if (null != applications.getApplication(event.getApplicationId()).getInstanceByNetworkPartitionId(applicationInstance.getNetworkPartitionId())) {
+ if (null != applications.getApplication(event.getApplicationId()).
+ getInstanceByNetworkPartitionId(applicationInstance.getNetworkPartitionId())) {
log.warn("Application instance with id [ " + applicationInstance.getInstanceId() + " ] already exists");
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
index c7a39b5..ebba54b 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
@@ -20,7 +20,9 @@ package org.apache.stratos.messaging.message.processor.applications;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
import org.apache.stratos.messaging.domain.applications.Applications;
+import org.apache.stratos.messaging.domain.instance.ApplicationInstance;
import org.apache.stratos.messaging.event.applications.ApplicationInstanceTerminatedEvent;
import org.apache.stratos.messaging.message.processor.MessageProcessor;
import org.apache.stratos.messaging.message.processor.applications.updater.ApplicationsUpdater;
@@ -85,9 +87,16 @@ public class ApplicationInstanceTerminatedMessageProcessor extends MessageProces
// check if an Application with same name exists in applications
String appId = event.getAppId();
+ String instanceId = event.getInstanceId();
if (applications.applicationExists(appId)) {
log.warn("Application with id [ " + appId + " ] still exists in Applications, removing it");
- applications.removeApplication(appId);
+ ApplicationInstance instance = applications.getApplication(appId).
+ getInstanceContexts(instanceId);
+ if(instance == null) {
+ log.info("Application [Instance] " + instanceId + " has already been removed");
+ }
+ instance.setStatus(ApplicationStatus.Terminated);
+ applications.getApplication(appId).removeInstance(instanceId);
}
notifyEventListeners(event);
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
index 6f6d335..4e43f35 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
@@ -116,6 +116,7 @@ public class ClusterInstanceTerminatedProcessor extends MessageProcessor {
if (log.isDebugEnabled()) {
log.debug(String.format("Cluster not exists in service: [service] %s [cluster] %s", event.getServiceName(),
event.getClusterId()));
+ return false;
}
} else {
// Apply changes to the topology
@@ -124,12 +125,14 @@ public class ClusterInstanceTerminatedProcessor extends MessageProcessor {
log.warn("Cluster Instance Context is not found for [cluster] " +
event.getClusterId() + " [instance-id] " +
event.getInstanceId());
+ return false;
}
ClusterStatus status = ClusterStatus.Terminated;
if (!context.isStateTransitionValid(status)) {
log.error("Invalid State Transition from " + context.getStatus() + " to " + status);
}
context.setStatus(status);
+ cluster.removeInstanceContext(event.getInstanceId());
}