You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2014/12/09 19:27:18 UTC

[1/2] stratos git commit: fixing the removal of application when undeploy it

Repository: stratos
Updated Branches:
  refs/heads/4.1.0-test f12a1e615 -> 9157af8d1


fixing the removal of application when undeploy it


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/5d6b6806
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/5d6b6806
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/5d6b6806

Branch: refs/heads/4.1.0-test
Commit: 5d6b68061290a7d248bddb9a2deabf1089ad0353
Parents: f12a1e6
Author: reka <rt...@gmail.com>
Authored: Tue Dec 9 23:26:10 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Tue Dec 9 23:26:10 2014 +0530

----------------------------------------------------------------------
 .../autoscaler/applications/topic/ApplicationBuilder.java    | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/5d6b6806/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 29b442d..612a008 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
@@ -296,9 +296,8 @@ public class ApplicationBuilder {
                 if(application.getInstanceContextCount() == 0) {
                     AutoscalerContext.getInstance().removeAppMonitor(appId);
                     //Removing the application from memory and registry
-                    ApplicationHolder.removeApplication(appId);
-                    log.info("Application is removed: [application-id] " + appId);
-
+                    //ApplicationHolder.removeApplication(appId);
+                    log.info("Application run time is removed: [application-id] " + appId);
                 }
                 ApplicationsEventPublisher.sendApplicationInstanceTerminatedEvent(appId, clusterData);
             } else {
@@ -597,6 +596,9 @@ public class ApplicationBuilder {
         //Updating the Application Monitor
         ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance().getAppMonitor(appId);
         if (applicationMonitor != null) {
+            if(status == ApplicationStatus.Terminating) {
+                applicationMonitor.setTerminating(true);
+            }
             applicationMonitor.setStatus(status, instanceId);
         } else {
             log.warn("Application monitor cannot be found: [application-id] " + appId);


[2/2] stratos git commit: fixing concurrent modification issue and destroying cluster monitor upon the termianted event

Posted by re...@apache.org.
fixing concurrent modification issue and destroying cluster monitor upon the termianted event


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9157af8d
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9157af8d
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9157af8d

Branch: refs/heads/4.1.0-test
Commit: 9157af8d17c9350ad37aea0f7caa573c1218003f
Parents: 5d6b680
Author: reka <rt...@gmail.com>
Authored: Tue Dec 9 23:57:06 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Tue Dec 9 23:57:06 2014 +0530

----------------------------------------------------------------------
 .../AutoscalerTopologyEventReceiver.java        |  5 +++-
 .../stratos/autoscaler/monitor/Monitor.java     |  4 ++--
 .../monitor/cluster/VMClusterMonitor.java       | 24 ++++++++++++++------
 3 files changed, 23 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/9157af8d/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 1b92a1d..ddbe1a6 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
@@ -283,13 +283,16 @@ public class AutoscalerTopologyEventReceiver {
                 AbstractClusterMonitor monitor;
                 ApplicationMonitor appMonitor = null;
                 monitor = asCtx.getClusterMonitor(clusterId);
+                appMonitor = AutoscalerContext.getInstance().
+                        getAppMonitor(clusterTerminatedEvent.getAppId());
                 if (null == monitor) {
                     if (log.isDebugEnabled()) {
                         log.debug(String.format("A cluster monitor is not found in autoscaler context "
                                 + "[cluster] %s", clusterId));
                     }
                     // if the cluster monitor is null, assume that its termianted
-                    appMonitor = AutoscalerContext.getInstance().getAppMonitor(clusterTerminatedEvent.getAppId());
+                    appMonitor = AutoscalerContext.getInstance().
+                            getAppMonitor(clusterTerminatedEvent.getAppId());
                     if (appMonitor != null) {
                         appMonitor.onChildStatusEvent(
                                 new ClusterStatusEvent(ClusterStatus.Terminated,

http://git-wip-us.apache.org/repos/asf/stratos/blob/9157af8d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
index 7f17a07..5656b19 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
@@ -190,9 +190,9 @@ public abstract class Monitor implements EventHandler {
      */
     public boolean hasInstance() {
         if (this.instanceIdToInstanceMap.isEmpty()) {
-            return true;
-        } else {
             return false;
+        } else {
+            return true;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/9157af8d/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 103dbe5..459eb7c 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
@@ -1040,20 +1040,30 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
                             partitionContext.getPartitionId() + " ]");
                     // }
                     // need to terminate active, pending and obsolete members
-
+                    //FIXME to traverse concurrent
                     // active members
+                    List<String> activeMembers = new ArrayList<String>();
                     Iterator<MemberContext> iterator = partitionContext.getActiveMembers().listIterator();
-                    while(iterator.hasNext()) {
+                    while (iterator.hasNext()) {
                         MemberContext activeMemberCtxt = iterator.next();
-                        String memberId = activeMemberCtxt.getMemberId();
+                        activeMembers.add(activeMemberCtxt.getMemberId());
+
+                    }
+                    for (String memberId : activeMembers) {
                         log.info("Sending instance cleanup for the active member [member id] " + memberId);
                         partitionContext.moveActiveMemberToTerminationPendingMembers(memberId);
                         InstanceNotificationPublisher.getInstance().
                                 sendInstanceCleanupEventForMember(memberId);
                     }
-
                     Iterator<MemberContext> pendingIterator = partitionContext.getPendingMembers().listIterator();
-                    while(pendingIterator.hasNext()) {
+
+                    List<String> pendingMembers = new ArrayList<String>();
+                    while (pendingIterator.hasNext()) {
+                        MemberContext activeMemberCtxt = pendingIterator.next();
+                        pendingMembers.add(activeMemberCtxt.getMemberId());
+
+                    }
+                    for (String memberId : pendingMembers) {
                         MemberContext pendingMemberCtxt = pendingIterator.next();
                         // pending members
                         String memeberId = pendingMemberCtxt.getMemberId();
@@ -1170,7 +1180,7 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
                         members.add(activeMember.getMemberId());
                     }
 
-                    for(String memberId: members) {
+                    for (String memberId : members) {
                         partitionContext.moveActiveMemberToTerminationPendingMembers(
                                 memberId);
                     }
@@ -1181,7 +1191,7 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
                         MemberContext activeMember = pendingIterator.next();
                         pendingMembers.add(activeMember.getMemberId());
                     }
-                    for(String memberId: members) {
+                    for (String memberId : members) {
                         // pending members
                         log.info("Moving pending member [member id] " + memberId +
                                 " obsolete list");