fixing processor issue while calulating status of group
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/0c5d4caa Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/0c5d4caa Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/0c5d4caa Branch: refs/heads/master Commit: 0c5d4caa11d7ca9c9a498a32d369b563a395fa41 Parents: a8ed191 Author: reka <[email protected]> Authored: Tue Dec 2 22:38:54 2014 +0530 Committer: reka <[email protected]> Committed: Tue Dec 2 23:28:17 2014 +0530 ---------------------------------------------------------------------- .../application/MonitorNotFoundException.java | 56 ++++++++++++++++++++ .../ParentMonitorNotFoundException.java | 56 -------------------- .../autoscaler/monitor/EventHandler.java | 5 +- .../monitor/component/ApplicationMonitor.java | 6 +-- .../monitor/component/GroupMonitor.java | 21 ++++---- .../component/ParentComponentMonitor.java | 25 ++++----- .../builder/MonitorStatusEventBuilder.java | 11 ++-- .../group/GroupStatusActiveProcessor.java | 12 ++--- .../group/GroupStatusInActiveProcessor.java | 4 +- .../group/GroupStatusProcessorChain.java | 9 ++++ .../group/GroupStatusTerminatedProcessor.java | 7 ++- .../group/GroupStatusTerminatingProcessor.java | 11 ++-- 12 files changed, 113 insertions(+), 110 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/MonitorNotFoundException.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/MonitorNotFoundException.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/MonitorNotFoundException.java new file mode 100644 index 0000000..325b825 --- /dev/null +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/MonitorNotFoundException.java @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.stratos.autoscaler.exception.application; + +/** + * This will throw when required monitor not found + */ +public class MonitorNotFoundException extends Exception{ + private static final long serialVersionUID = -9163807860189126883L; + private String message; + + public MonitorNotFoundException(final String message, final Exception exception) { + + super(message, exception); + this.setMessage(message); + + } + + public MonitorNotFoundException(final Exception exception) { + + super(exception); + + } + + public MonitorNotFoundException(final String msg) { + + super(msg); + this.setMessage(msg); + + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/ParentMonitorNotFoundException.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/ParentMonitorNotFoundException.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/ParentMonitorNotFoundException.java deleted file mode 100644 index e5e00cd..0000000 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/ParentMonitorNotFoundException.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.stratos.autoscaler.exception.application; - -/** - * This will throw when required monitor not found - */ -public class ParentMonitorNotFoundException extends Exception{ - private static final long serialVersionUID = -9163807860189126883L; - private String message; - - public ParentMonitorNotFoundException(final String message, final Exception exception) { - - super(message, exception); - this.setMessage(message); - - } - - public ParentMonitorNotFoundException(final Exception exception) { - - super(exception); - - } - - public ParentMonitorNotFoundException(final String msg) { - - super(msg); - this.setMessage(msg); - - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java index bf65eb4..ca105de 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java @@ -18,8 +18,7 @@ */ package org.apache.stratos.autoscaler.monitor; -import org.apache.stratos.autoscaler.exception.application.ParentMonitorNotFoundException; -import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException; +import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException; import org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent; import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent; @@ -40,7 +39,7 @@ public interface EventHandler { * @param statusEvent */ public abstract void onParentStatusEvent(MonitorStatusEvent statusEvent) throws - ParentMonitorNotFoundException; + MonitorNotFoundException; /** * Triggered when a scaling event is received from a child. http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/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 990d482..c4d73e8 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 @@ -25,7 +25,7 @@ import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder; import org.apache.stratos.autoscaler.context.application.ApplicationInstanceContext; import org.apache.stratos.autoscaler.context.partition.network.ApplicationLevelNetworkPartitionContext; import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException; -import org.apache.stratos.autoscaler.exception.application.ParentMonitorNotFoundException; +import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException; import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException; import org.apache.stratos.autoscaler.exception.policy.PolicyValidationException; import org.apache.stratos.autoscaler.monitor.Monitor; @@ -112,7 +112,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { //notify the children about the state change try { MonitorStatusEventBuilder.notifyChildren(this, new ApplicationStatusEvent(status, appId, instanceId)); - } catch (ParentMonitorNotFoundException e) { + } catch (MonitorNotFoundException e) { log.error("Error while notifying the children from [application] " + appId, e); //TODO revert siblings } @@ -236,7 +236,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { public void createInstanceOnBurstingForApplication() throws TopologyInConsistentException, PolicyValidationException, - ParentMonitorNotFoundException { + MonitorNotFoundException { Application application = ApplicationHolder.getApplications().getApplication(appId); if (application == null) { String msg = "Application cannot be found in the Topology."; http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/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 b2b6697..96a1112 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 @@ -29,7 +29,7 @@ import org.apache.stratos.autoscaler.context.AutoscalerContext; import org.apache.stratos.autoscaler.context.group.GroupInstanceContext; import org.apache.stratos.autoscaler.context.partition.network.GroupLevelNetworkPartitionContext; import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException; -import org.apache.stratos.autoscaler.exception.application.ParentMonitorNotFoundException; +import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException; import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException; import org.apache.stratos.autoscaler.monitor.Monitor; import org.apache.stratos.autoscaler.monitor.events.GroupStatusEvent; @@ -45,7 +45,6 @@ import org.apache.stratos.messaging.domain.applications.Application; import org.apache.stratos.messaging.domain.applications.ApplicationStatus; import org.apache.stratos.messaging.domain.applications.Group; import org.apache.stratos.messaging.domain.applications.GroupStatus; -import org.apache.stratos.messaging.domain.instance.ApplicationInstance; import org.apache.stratos.messaging.domain.instance.GroupInstance; import org.apache.stratos.messaging.domain.instance.Instance; import org.apache.stratos.messaging.domain.topology.ClusterStatus; @@ -168,7 +167,7 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable { //notify the children about the state change try { MonitorStatusEventBuilder.notifyChildren(this, new GroupStatusEvent(status, this.id, instanceId)); - } catch (ParentMonitorNotFoundException e) { + } catch (MonitorNotFoundException e) { log.error("Error while notifying the children from the [group] " + this.id, e); //TODO revert siblings } @@ -184,20 +183,20 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable { onChildActivatedEvent(id, instanceId); } else if (status1 == ClusterStatus.Inactive || status1 == GroupStatus.Inactive) { - this.markMonitorAsInactive(id); + this.markMonitorAsInactive(instanceId); onChildInactiveEvent(id, instanceId); } else if (status1 == ClusterStatus.Created || status1 == GroupStatus.Created) { - if (this.terminatingMonitorsList.contains(id)) { - this.terminatingMonitorsList.remove(id); - this.aliasToActiveMonitorsMap.remove(id); + if (this.terminatingMonitorsList.contains(instanceId)) { + this.terminatingMonitorsList.remove(instanceId); + this.aliasToActiveMonitorsMap.remove(instanceId); if (AutoscalerContext.getInstance().getClusterMonitors().containsKey(id)) { AutoscalerContext.getInstance().removeClusterMonitor(id); } } } else if (status1 == ClusterStatus.Terminating || status1 == GroupStatus.Terminating) { //mark the child monitor as inActive in the map - this.markMonitorAsTerminating(id); + this.markMonitorAsTerminating(instanceId); } else if (status1 == ClusterStatus.Terminated || status1 == GroupStatus.Terminated) { //Check whether all dependent goes Terminated and then start them in parallel. @@ -230,7 +229,7 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable { @Override public void onParentStatusEvent(MonitorStatusEvent statusEvent) - throws ParentMonitorNotFoundException { + throws MonitorNotFoundException { String instanceId = statusEvent.getInstanceId(); // send the ClusterTerminating event if (statusEvent.getStatus() == GroupStatus.Terminating || @@ -400,10 +399,10 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable { * * @param group * @param parentInstanceId - * @throws ParentMonitorNotFoundException + * @throws org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException */ public void createInstanceAndStartDependency(Group group, String parentInstanceId) - throws ParentMonitorNotFoundException { + throws MonitorNotFoundException { String deploymentPolicyName = group.getDeploymentPolicy(); String instanceId; http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/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 f48461f..01c1787 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 @@ -33,7 +33,7 @@ import org.apache.stratos.autoscaler.applications.dependency.context.GroupChildC import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder; import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException; -import org.apache.stratos.autoscaler.exception.application.ParentMonitorNotFoundException; +import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException; import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException; import org.apache.stratos.autoscaler.exception.partition.PartitionValidationException; import org.apache.stratos.autoscaler.exception.policy.PolicyValidationException; @@ -42,6 +42,7 @@ import org.apache.stratos.autoscaler.monitor.MonitorFactory; import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor; import org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder; import org.apache.stratos.autoscaler.status.processor.StatusChecker; +import org.apache.stratos.autoscaler.util.ServiceReferenceHolder; import org.apache.stratos.messaging.domain.applications.GroupStatus; import org.apache.stratos.messaging.domain.applications.ParentComponent; import org.apache.stratos.messaging.domain.instance.Instance; @@ -97,7 +98,7 @@ public abstract class ParentComponentMonitor extends Monitor { * it will get invoked when the monitor starts up only. */ public void startDependency(ParentComponent component, String instanceId) throws - ParentMonitorNotFoundException { + MonitorNotFoundException { //start the first dependency List<ApplicationChildContext> applicationContexts = this.startupDependencyTree. getStarAbleDependencies(); @@ -110,7 +111,7 @@ public abstract class ParentComponentMonitor extends Monitor { * it will get invoked when the monitor starts up only. */ public boolean startDependencyByInstanceCreation(String childId, String instanceId) throws - ParentMonitorNotFoundException { + MonitorNotFoundException { //start the first dependency List<ApplicationChildContext> applicationContexts = this.startupDependencyTree.getStarAbleDependencies(childId); @@ -139,7 +140,7 @@ public abstract class ParentComponentMonitor extends Monitor { * * @param id alias/clusterId of which receive the activated event */ - public boolean startDependency(String id, String instanceId) throws ParentMonitorNotFoundException { + public boolean startDependency(String id, String instanceId) throws MonitorNotFoundException { List<ApplicationChildContext> applicationContexts = this.startupDependencyTree .getStarAbleDependencies(id); List<String> instanceIds = new ArrayList<String>(); @@ -203,7 +204,7 @@ public abstract class ParentComponentMonitor extends Monitor { * @param applicationContexts the found applicationContexts to be started */ private boolean startDependency(List<ApplicationChildContext> applicationContexts, String instanceId) - throws ParentMonitorNotFoundException { + throws MonitorNotFoundException { if (applicationContexts != null && applicationContexts.isEmpty()) { //all the groups/clusters have been started and waiting for activation log.info("There is no child found for the [group]: " + this.id); @@ -217,7 +218,7 @@ public abstract class ParentComponentMonitor extends Monitor { //FIXME whether to start new monitor or throw exception if (!this.aliasToActiveMonitorsMap.containsKey(context.getId())) { String msg = "Required Monitor cannot be fount in the hierarchy"; - throw new ParentMonitorNotFoundException(msg); + throw new MonitorNotFoundException(msg); } else { //starting a new instance of the child Monitor monitor = aliasToActiveMonitorsMap.get(context.getId()); @@ -255,6 +256,7 @@ public abstract class ParentComponentMonitor extends Monitor { if (this.terminatingMonitorsList.contains(eventId)) { this.terminatingMonitorsList.remove(eventId); } + boolean startDep; if(!aliasToActiveMonitorsMap.containsKey(eventId)) { startDep = startDependency(eventId, instanceId); @@ -262,14 +264,13 @@ public abstract class ParentComponentMonitor extends Monitor { startDep = startDependencyByInstanceCreation(eventId, instanceId); } - if (log.isDebugEnabled()) { - log.debug("started a child: " + startDep + " by the group/cluster: " + eventId); - - } if (!startDep) { - StatusChecker.getInstance().onChildStatusChange(eventId, this.id, this.appId, instanceId); + ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain(). + process(this.id, this.appId, instanceId); + } else { + log.info("started a child: " + startDep + " by the group/cluster: " + eventId); } - } catch (ParentMonitorNotFoundException e) { + } catch (MonitorNotFoundException e) { //TODO revert the siblings and notify parent, change a flag for reverting/un-subscription log.error(e); } http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java index 78fd308..c2491a0 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java @@ -20,8 +20,7 @@ package org.apache.stratos.autoscaler.monitor.events.builder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.autoscaler.exception.application.ParentMonitorNotFoundException; -import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException; +import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException; import org.apache.stratos.autoscaler.monitor.Monitor; import org.apache.stratos.autoscaler.monitor.component.ParentComponentMonitor; import org.apache.stratos.autoscaler.monitor.events.*; @@ -29,8 +28,6 @@ import org.apache.stratos.messaging.domain.applications.ApplicationStatus; import org.apache.stratos.messaging.domain.topology.ClusterStatus; import org.apache.stratos.messaging.domain.applications.GroupStatus; -import java.util.List; - /** * This will build the necessary monitor status events to be sent to the parent/child monitor */ @@ -67,14 +64,14 @@ public class MonitorStatusEventBuilder { } public static void notifyChildren (ParentComponentMonitor componentMonitor, MonitorStatusEvent statusEvent) - throws ParentMonitorNotFoundException { + throws MonitorNotFoundException { for (Monitor activeChildMonitor : componentMonitor.getAliasToActiveMonitorsMap().values()) { activeChildMonitor.onParentStatusEvent(statusEvent); } } public static void notifyChildGroup(Monitor child, GroupStatus state, String instanceId) - throws ParentMonitorNotFoundException { + throws MonitorNotFoundException { MonitorStatusEvent statusEvent = new GroupStatusEvent(state, child.getId(), instanceId); child.onParentStatusEvent(statusEvent); } @@ -91,7 +88,7 @@ public class MonitorStatusEventBuilder { }*/ public static void notifyChildCluster(Monitor child, ClusterStatus state, String instanceId) - throws ParentMonitorNotFoundException { + throws MonitorNotFoundException { MonitorStatusEvent statusEvent = new ClusterStatusEvent(state, child.getId(), instanceId); child.onParentStatusEvent(statusEvent); } http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/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 fa2ffa8..9e60357 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 @@ -65,10 +65,6 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor { Map<String, Group> groups; Map<String, ClusterDataHolder> clusterData; - if (log.isInfoEnabled()) { - log.info("StatusChecker calculating the status for the group [ " + idOfComponent + " ]"); - } - try { ApplicationHolder.acquireWriteLock(); if (idOfComponent.equals(appId)) { @@ -96,23 +92,21 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor { //send application activated event log.info("sending app activate: " + appId); ApplicationBuilder.handleApplicationActivatedEvent(appId, instanceId); + return true; } else if (component instanceof Group) { //send activation to the parent log.info("sending group activate: " + component.getUniqueIdentifier()); ApplicationBuilder.handleGroupActivatedEvent(appId, component.getUniqueIdentifier(), instanceId); + return true; } } } - - } finally { ApplicationHolder.releaseWriteLock(); } - - - return true; + return false; } http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInActiveProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInActiveProcessor.java index 84fcf8f..90b608c 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInActiveProcessor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInActiveProcessor.java @@ -96,12 +96,14 @@ public class GroupStatusInActiveProcessor extends GroupStatusProcessor { if (component instanceof Application) { //send application activated event log.warn("Application can't be in in-active : " + appId); + return true; //ApplicationBuilder.handleApp(appId); } else if (component instanceof Group) { //send activation to the parent if (((Group) component).getStatus(null) != GroupStatus.Inactive) { log.info("sending group in-active: " + component.getUniqueIdentifier()); ApplicationBuilder.handleGroupInActivateEvent(appId, component.getUniqueIdentifier(), instanceId); + return true; } } } @@ -113,7 +115,7 @@ public class GroupStatusInActiveProcessor extends GroupStatusProcessor { } - return true; + return false; } http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java index 0e8c7cc..5724669 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java @@ -18,12 +18,16 @@ */ package org.apache.stratos.autoscaler.status.processor.group; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.status.processor.StatusProcessorChain; /** * Cluster status tracking processor chain */ public class GroupStatusProcessorChain extends StatusProcessorChain { + private static final Log log = LogFactory.getLog(GroupStatusActiveProcessor.class); + private GroupStatusActiveProcessor groupStatusActiveProcessor; private GroupStatusTerminatedProcessor groupStatusTerminatedProcessor; private GroupStatusTerminatingProcessor groupStatusTerminatingProcessor; @@ -51,6 +55,11 @@ public class GroupStatusProcessorChain extends StatusProcessorChain { if (root == null) { throw new RuntimeException("Message processor chain is not initialized"); } + if (log.isInfoEnabled()) { + log.info("GroupProcessor chain calculating the status for the group " + + "[ " + idOfComponent + " ]"); + } + return root.process(idOfComponent, appId, instanceId); } http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/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 329a901..3ea460d 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 @@ -94,11 +94,14 @@ public class GroupStatusTerminatedProcessor extends GroupStatusProcessor { if (component instanceof Application) { log.info("sending app terminated: " + appId); ApplicationBuilder.handleApplicationTerminatedEvent(appId); + return true; } else if (component instanceof Group) { //send activation to the parent if (((Group) component).getStatus(null) != GroupStatus.Terminated) { log.info("sending group terminated : " + component.getUniqueIdentifier()); - ApplicationBuilder.handleGroupTerminatedEvent(appId, component.getUniqueIdentifier(), instanceId); + ApplicationBuilder.handleGroupTerminatedEvent(appId, + component.getUniqueIdentifier(), instanceId); + return true; } } } @@ -111,7 +114,7 @@ public class GroupStatusTerminatedProcessor extends GroupStatusProcessor { } - return true; + return false; } http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/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 97bedb3..5d51f23 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 @@ -95,24 +95,23 @@ public class GroupStatusTerminatingProcessor extends GroupStatusProcessor { if (component instanceof Application) { log.info("sending app terminated: " + appId); ApplicationBuilder.handleApplicationTerminatedEvent(appId); + return true; } else if (component instanceof Group) { //send activation to the parent if (((Group) component).getStatus(null) != GroupStatus.Terminated) { log.info("sending group terminated : " + component.getUniqueIdentifier()); - ApplicationBuilder.handleGroupTerminatedEvent(appId, component.getUniqueIdentifier(), instanceId); + ApplicationBuilder.handleGroupTerminatedEvent(appId, + component.getUniqueIdentifier(), instanceId); + return true; } } } } - - } finally { ApplicationHolder.releaseWriteLock(); } - - - return true; + return false; }
