Repository: stratos Updated Branches: refs/heads/4.0.0-grouping 8efef751e -> ae4f94efb
initial state life cycle changes Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/4ec1d6fe Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/4ec1d6fe Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/4ec1d6fe Branch: refs/heads/4.0.0-grouping Commit: 4ec1d6fe18760917ecc2b2b6f3633bb7b6cea76d Parents: 8efef75 Author: Isuru Haththotuwa <[email protected]> Authored: Thu Oct 16 18:06:03 2014 +0530 Committer: Isuru Haththotuwa <[email protected]> Committed: Sun Oct 19 08:41:13 2014 +0530 ---------------------------------------------------------------------- .../InstanceStatusEventMessageDelegator.java | 48 ++++++++++++--- .../controller/topology/TopologyBuilder.java | 15 +++-- .../conf/LoadBalancerConfiguration.java | 8 ++- .../messaging/domain/topology/Member.java | 15 +++-- .../messaging/domain/topology/MemberStatus.java | 59 +++++++++++++++--- .../InvalidLifecycleTransitionException.java | 47 ++++++++++++++ .../topology/lifecycle/LifeCycleState.java | 28 +++++++++ .../lifecycle/LifeCycleStateManager.java | 64 ++++++++++++++++++++ .../InstanceSpawnedMessageProcessor.java | 2 +- .../MemberActivatedMessageProcessor.java | 7 ++- .../MemberMaintenanceModeProcessor.java | 7 ++- .../MemberReadyToShutdownMessageProcessor.java | 7 ++- .../topology/MemberStartedMessageProcessor.java | 7 ++- .../MemberSuspendedMessageProcessor.java | 7 ++- 14 files changed, 284 insertions(+), 37 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topic/instance/status/InstanceStatusEventMessageDelegator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topic/instance/status/InstanceStatusEventMessageDelegator.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topic/instance/status/InstanceStatusEventMessageDelegator.java index f019a15..fd89723 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topic/instance/status/InstanceStatusEventMessageDelegator.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topic/instance/status/InstanceStatusEventMessageDelegator.java @@ -21,6 +21,7 @@ package org.apache.stratos.cloud.controller.topic.instance.status; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.cloud.controller.topology.TopologyBuilder; +import org.apache.stratos.messaging.domain.topology.lifecycle.InvalidLifecycleTransitionException; import org.apache.stratos.messaging.event.instance.status.InstanceActivatedEvent; import org.apache.stratos.messaging.event.instance.status.InstanceMaintenanceModeEvent; import org.apache.stratos.messaging.event.instance.status.InstanceReadyToShutdownEvent; @@ -48,27 +49,56 @@ public class InstanceStatusEventMessageDelegator implements Runnable { if (InstanceStartedEvent.class.getName().equals(type)) { // retrieve the actual message String json = message.getText(); - TopologyBuilder.handleMemberStarted((InstanceStartedEvent) Util. - jsonToObject(json, InstanceStartedEvent.class)); + try { + TopologyBuilder.handleMemberStarted((InstanceStartedEvent) Util. + jsonToObject(json, InstanceStartedEvent.class)); + + } catch (InvalidLifecycleTransitionException e) { + //TODO: handle properly + log.error(e); + } + } else if (InstanceActivatedEvent.class.getName().equals(type)) { // retrieve the actual message String json = message.getText(); - TopologyBuilder.handleMemberActivated((InstanceActivatedEvent) Util. - jsonToObject(json, InstanceActivatedEvent.class)); + try { + TopologyBuilder.handleMemberActivated((InstanceActivatedEvent) Util. + jsonToObject(json, InstanceActivatedEvent.class)); + + } catch (InvalidLifecycleTransitionException e) { + //TODO: handle properly + log.error(e); + } + } else if (InstanceReadyToShutdownEvent.class.getName().equals(type)) { //retrieve the actual message String json = message.getText(); - TopologyBuilder.handleMemberReadyToShutdown((InstanceReadyToShutdownEvent) Util. - jsonToObject(json, InstanceReadyToShutdownEvent.class)); + try { + TopologyBuilder.handleMemberReadyToShutdown((InstanceReadyToShutdownEvent) Util. + jsonToObject(json, InstanceReadyToShutdownEvent.class)); + + } catch (InvalidLifecycleTransitionException e) { + //TODO: handle properly + log.error(e); + } + } else if (InstanceMaintenanceModeEvent.class.getName().equals(type)) { //retrieve the actual message String json = message.getText(); - TopologyBuilder.handleMemberMaintenance((InstanceMaintenanceModeEvent) Util. - jsonToObject(json, InstanceMaintenanceModeEvent.class)); + try { + TopologyBuilder.handleMemberMaintenance((InstanceMaintenanceModeEvent) Util. + jsonToObject(json, InstanceMaintenanceModeEvent.class)); + + } catch (InvalidLifecycleTransitionException e) { + //TODO: handle properly + log.error(e); + } + } else { log.warn("Event message received is not InstanceStartedEvent or InstanceActivatedEvent"); } - } catch (Exception e) { + + } catch (Exception e) { String error = "Failed to retrieve the instance status event message"; log.error(error, e); // Commenting throwing the error. Otherwise thread will not execute if an exception is thrown. http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java index 6645529..906323b 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java @@ -29,6 +29,7 @@ import org.apache.stratos.cloud.controller.publisher.CartridgeInstanceDataPublis import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder; import org.apache.stratos.cloud.controller.util.CloudControllerUtil; import org.apache.stratos.messaging.domain.topology.*; +import org.apache.stratos.messaging.domain.topology.lifecycle.InvalidLifecycleTransitionException; import org.apache.stratos.messaging.domain.topology.util.CompositeApplicationBuilder; import org.apache.stratos.messaging.event.application.status.ApplicationActivatedEvent; import org.apache.stratos.messaging.event.application.status.ClusterActivatedEvent; @@ -239,7 +240,7 @@ public class TopologyBuilder { TopologyManager.acquireWriteLock(); Member member = new Member(serviceName, clusterId, networkPartitionId, partitionId, memberId); - member.setStatus(MemberStatus.Created); + //member.setStatus(MemberStatus.Created); member.setMemberIp(privateIp); member.setLbClusterId(lbClusterId); member.setMemberPublicIp(publicIp); @@ -255,7 +256,7 @@ public class TopologyBuilder { publicIp, privateIp, context); } - public static void handleMemberStarted(InstanceStartedEvent instanceStartedEvent) { + public static void handleMemberStarted(InstanceStartedEvent instanceStartedEvent) throws InvalidLifecycleTransitionException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(instanceStartedEvent.getServiceName()); if (service == null) { @@ -301,6 +302,7 @@ public class TopologyBuilder { try { TopologyManager.acquireWriteLock(); + // try update lifecycle state member.setStatus(MemberStatus.Starting); log.info("member started event adding status started"); @@ -320,7 +322,7 @@ public class TopologyBuilder { null); } - public static void handleMemberActivated(InstanceActivatedEvent instanceActivatedEvent) { + public static void handleMemberActivated(InstanceActivatedEvent instanceActivatedEvent) throws InvalidLifecycleTransitionException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(instanceActivatedEvent.getServiceName()); if (service == null) { @@ -369,6 +371,7 @@ public class TopologyBuilder { memberActivatedEvent.setGroupId(instanceActivatedEvent.getGroupId()); try { TopologyManager.acquireWriteLock(); + // try update lifecycle state member.setStatus(MemberStatus.Activated); log.info("member started event adding status activated"); Cartridge cartridge = FasterLookUpDataHolder.getInstance(). @@ -404,7 +407,7 @@ public class TopologyBuilder { } public static void handleMemberReadyToShutdown(InstanceReadyToShutdownEvent instanceReadyToShutdownEvent) - throws InvalidMemberException, InvalidCartridgeTypeException { + throws InvalidMemberException, InvalidCartridgeTypeException, InvalidLifecycleTransitionException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(instanceReadyToShutdownEvent.getServiceName()); //update the status of the member @@ -476,7 +479,7 @@ public class TopologyBuilder { } public static void handleMemberMaintenance(InstanceMaintenanceModeEvent instanceMaintenanceModeEvent) - throws InvalidMemberException, InvalidCartridgeTypeException { + throws InvalidMemberException, InvalidCartridgeTypeException, InvalidLifecycleTransitionException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(instanceMaintenanceModeEvent.getServiceName()); //update the status of the member @@ -531,6 +534,7 @@ public class TopologyBuilder { instanceMaintenanceModeEvent.getMemberId()); try { TopologyManager.acquireWriteLock(); + // try update lifecycle state member.setStatus(MemberStatus.In_Maintenance); log.info("member maintenance mode event adding status started"); @@ -822,5 +826,4 @@ public class TopologyBuilder { //publishing data TopologyEventPublisher.sendApplicationActivatedEvent(applicationActivatedEvent1); } - } http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java index ed8aa05..4fff70a 100644 --- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java +++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java @@ -32,6 +32,7 @@ import org.apache.stratos.load.balancer.context.LoadBalancerContext; import org.apache.stratos.load.balancer.context.LoadBalancerContextUtil; import org.apache.stratos.load.balancer.exception.InvalidConfigurationException; import org.apache.stratos.messaging.domain.topology.*; +import org.apache.stratos.messaging.domain.topology.lifecycle.InvalidLifecycleTransitionException; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; import java.io.File; @@ -488,7 +489,12 @@ public class LoadBalancerConfiguration { Port port = new Port(portNode.getName(), Integer.valueOf(value), Integer.valueOf(proxy)); member.addPort(port); } - member.setStatus(MemberStatus.Activated); + try { + member.setStatus(MemberStatus.Activated); + + } catch (InvalidLifecycleTransitionException e) { + log.error(e); + } cluster.addMember(member); } // Add cluster to service http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java index 4a3bf17..4ea198c 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java @@ -19,6 +19,8 @@ package org.apache.stratos.messaging.domain.topology; +import org.apache.stratos.messaging.domain.topology.lifecycle.InvalidLifecycleTransitionException; +import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleStateManager; import org.apache.stratos.messaging.util.bean.type.map.MapAdapter; import javax.xml.bind.annotation.XmlRootElement; @@ -43,11 +45,12 @@ public class Member implements Serializable { @XmlJavaTypeAdapter(MapAdapter.class) private final Map<Integer, Port> portMap; private String memberPublicIp; - private MemberStatus status; + //private MemberStatus status; private String memberIp; @XmlJavaTypeAdapter(MapAdapter.class) private Properties properties; private String lbClusterId; + private LifeCycleStateManager<MemberStatus> memberStateManager; public Member(String serviceName, String clusterId, String networkPartitionId, String partitionId, String memberId) { this.serviceName = serviceName; @@ -56,6 +59,7 @@ public class Member implements Serializable { this.partitionId = partitionId; this.memberId = memberId; this.portMap = new HashMap<Integer, Port>(); + this.memberStateManager = new LifeCycleStateManager<MemberStatus>(MemberStatus.Created); } public String getServiceName() { @@ -71,15 +75,15 @@ public class Member implements Serializable { } public MemberStatus getStatus() { - return status; + return memberStateManager.getCurrentState(); } - public void setStatus(MemberStatus status) { - this.status = status; + public void setStatus(MemberStatus status) throws InvalidLifecycleTransitionException { + this.memberStateManager.changeState(status); } public boolean isActive() { - return (this.status == MemberStatus.Activated); + return (this.memberStateManager.getCurrentState() == MemberStatus.Activated); } public Collection<Port> getPorts() { @@ -150,6 +154,5 @@ public class Member implements Serializable { public void setMemberPublicIp(String memberPublicIp) { this.memberPublicIp = memberPublicIp; } - } http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/MemberStatus.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/MemberStatus.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/MemberStatus.java index 508e65b..6d23c4b 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/MemberStatus.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/MemberStatus.java @@ -19,21 +19,62 @@ package org.apache.stratos.messaging.domain.topology; +import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState; + import javax.xml.bind.annotation.XmlRootElement; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; /** * Represents status of a member during its lifecycle. */ @XmlRootElement -public enum MemberStatus { - Created(1), - Starting(2), - Activated(3), - In_Maintenance(4), - ReadyToShutDown(5), - Terminated(6), - Suspended(0), - ShuttingDown(0); +public enum MemberStatus implements LifeCycleState { + + Created(1) { + @Override + public Set<LifeCycleState> getNextStates() { + return new HashSet<LifeCycleState>(Arrays.asList(MemberStatus.Starting)); + } + }, + Starting(2) { + @Override + public Set<LifeCycleState> getNextStates() { + return new HashSet<LifeCycleState>(Arrays.asList(MemberStatus.Activated)); + } + }, + Activated(3) { + @Override + public Set<LifeCycleState> getNextStates() { + return new HashSet<LifeCycleState>(Arrays.asList(MemberStatus.Suspended, + MemberStatus.In_Maintenance)); + } + }, + In_Maintenance(4) { + @Override + public Set<LifeCycleState> getNextStates() { + return new HashSet<LifeCycleState>(Arrays.asList(MemberStatus.ReadyToShutDown)); + } + }, + ReadyToShutDown(5) { + @Override + public Set<LifeCycleState> getNextStates() { + return new HashSet<LifeCycleState>(Arrays.asList(MemberStatus.Terminated)); + } + }, + Suspended(0) { + @Override + public Set<LifeCycleState> getNextStates() { + return new HashSet<LifeCycleState>(Arrays.asList(MemberStatus.Terminated)); + } + }, + Terminated(6) { + @Override + public Set<LifeCycleState> getNextStates() { + return null; + } + }; private int code; http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/InvalidLifecycleTransitionException.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/InvalidLifecycleTransitionException.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/InvalidLifecycleTransitionException.java new file mode 100644 index 0000000..279e70d --- /dev/null +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/InvalidLifecycleTransitionException.java @@ -0,0 +1,47 @@ +/* + * 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.messaging.domain.topology.lifecycle; + +public class InvalidLifecycleTransitionException extends Exception { + + private String message; + + public InvalidLifecycleTransitionException() { + super(); + } + + public InvalidLifecycleTransitionException(String message, Throwable cause) { + super(message, cause); + this.message = message; + } + + public InvalidLifecycleTransitionException(String message) { + super(message); + this.message = message; + } + + public InvalidLifecycleTransitionException(Throwable cause) { + super(cause); + } + + public String getMessage() { + return message; + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/LifeCycleState.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/LifeCycleState.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/LifeCycleState.java new file mode 100644 index 0000000..90d45fd --- /dev/null +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/LifeCycleState.java @@ -0,0 +1,28 @@ +/* + * 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.messaging.domain.topology.lifecycle; + +import java.io.Serializable; +import java.util.Set; + +public interface LifeCycleState extends Serializable { + + public Set<LifeCycleState> getNextStates(); +} http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/LifeCycleStateManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/LifeCycleStateManager.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/LifeCycleStateManager.java new file mode 100644 index 0000000..ee0d6e5 --- /dev/null +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/lifecycle/LifeCycleStateManager.java @@ -0,0 +1,64 @@ +/* + * 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.messaging.domain.topology.lifecycle; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.stratos.messaging.event.topology.TopologyEvent; + +import java.io.Serializable; +import java.util.Stack; + +public class LifeCycleStateManager<T extends LifeCycleState> implements Serializable { + + private static Log log = LogFactory.getLog(LifeCycleStateManager.class); + + private Stack<T> stateStack; + + public LifeCycleStateManager(T initialState) { + stateStack = new Stack<T>(); + stateStack.push(initialState); + } + + public void changeState (T nextState) throws InvalidLifecycleTransitionException { + + if(getCurrentState().getNextStates().contains(nextState)) { + // do the transition + stateStack.push(nextState); + //if (log.isDebugEnabled()) { + log.info("Life Cycle State successfully updated from " + getCurrentState() + " to " + nextState); + //} + } else { + // invalid state transition + String errorMsg = "Attempted transition from " + getCurrentState() + " to " + nextState + + " is invalid"; + log.error(errorMsg); + throw new InvalidLifecycleTransitionException(errorMsg); + } + } + + public Stack<T> getStateStack () { + return stateStack; + } + + public T getCurrentState () { + return stateStack.peek(); + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java index 3135ba5..7d7b593 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java @@ -131,7 +131,7 @@ public class InstanceSpawnedMessageProcessor extends MessageProcessor { // Apply changes to the topology Member member = new Member(event.getServiceName(), event.getClusterId(), event.getNetworkPartitionId(), event.getPartitionId(), event.getMemberId()); - member.setStatus(MemberStatus.Created); + //member.setStatus(MemberStatus.Created); member.setMemberPublicIp(event.getMemberPublicIp()); member.setMemberIp(event.getMemberIp()); member.setLbClusterId(event.getLbClusterId()); http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberActivatedMessageProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberActivatedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberActivatedMessageProcessor.java index c3f8844..dc98c9e 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberActivatedMessageProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberActivatedMessageProcessor.java @@ -25,6 +25,7 @@ import org.apache.stratos.messaging.domain.topology.Member; import org.apache.stratos.messaging.domain.topology.MemberStatus; import org.apache.stratos.messaging.domain.topology.Service; import org.apache.stratos.messaging.domain.topology.Topology; +import org.apache.stratos.messaging.domain.topology.lifecycle.InvalidLifecycleTransitionException; import org.apache.stratos.messaging.event.topology.MemberActivatedEvent; import org.apache.stratos.messaging.message.filter.topology.TopologyClusterFilter; import org.apache.stratos.messaging.message.filter.topology.TopologyMemberFilter; @@ -59,6 +60,10 @@ public class MemberActivatedMessageProcessor extends MessageProcessor { try { return doProcess(event, topology); + } catch (InvalidLifecycleTransitionException e) { + log.error(e); + return false; + } finally { TopologyUpdater.releaseWriteLockForCluster(event.getServiceName(), event.getClusterId()); } @@ -73,7 +78,7 @@ public class MemberActivatedMessageProcessor extends MessageProcessor { } } - private boolean doProcess (MemberActivatedEvent event,Topology topology) { + private boolean doProcess (MemberActivatedEvent event,Topology topology) throws InvalidLifecycleTransitionException { // Apply service filter if (TopologyServiceFilter.getInstance().isActive()) { http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberMaintenanceModeProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberMaintenanceModeProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberMaintenanceModeProcessor.java index 2a080fe..9408e46 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberMaintenanceModeProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberMaintenanceModeProcessor.java @@ -22,6 +22,7 @@ package org.apache.stratos.messaging.message.processor.topology; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.messaging.domain.topology.*; +import org.apache.stratos.messaging.domain.topology.lifecycle.InvalidLifecycleTransitionException; import org.apache.stratos.messaging.event.topology.MemberMaintenanceModeEvent; import org.apache.stratos.messaging.message.filter.topology.TopologyClusterFilter; import org.apache.stratos.messaging.message.filter.topology.TopologyMemberFilter; @@ -56,6 +57,10 @@ public class MemberMaintenanceModeProcessor extends MessageProcessor { try { return doProcess(event, topology); + } catch (InvalidLifecycleTransitionException e) { + log.error(e); + return false; + } finally { TopologyUpdater.releaseWriteLockForCluster(event.getServiceName(), event.getClusterId()); } @@ -70,7 +75,7 @@ public class MemberMaintenanceModeProcessor extends MessageProcessor { } } - private boolean doProcess (MemberMaintenanceModeEvent event,Topology topology) { + private boolean doProcess (MemberMaintenanceModeEvent event,Topology topology) throws InvalidLifecycleTransitionException { // Apply service filter if (TopologyServiceFilter.getInstance().isActive()) { http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberReadyToShutdownMessageProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberReadyToShutdownMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberReadyToShutdownMessageProcessor.java index 8f9f149..83bb94f 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberReadyToShutdownMessageProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberReadyToShutdownMessageProcessor.java @@ -21,6 +21,7 @@ package org.apache.stratos.messaging.message.processor.topology; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.messaging.domain.topology.*; +import org.apache.stratos.messaging.domain.topology.lifecycle.InvalidLifecycleTransitionException; import org.apache.stratos.messaging.event.topology.MemberReadyToShutdownEvent; import org.apache.stratos.messaging.message.filter.topology.TopologyClusterFilter; import org.apache.stratos.messaging.message.filter.topology.TopologyMemberFilter; @@ -55,6 +56,10 @@ public class MemberReadyToShutdownMessageProcessor extends MessageProcessor{ try { return doProcess(event, topology); + } catch (InvalidLifecycleTransitionException e) { + log.error(e); + return false; + } finally { TopologyUpdater.releaseWriteLockForCluster(event.getServiceName(), event.getClusterId()); } @@ -69,7 +74,7 @@ public class MemberReadyToShutdownMessageProcessor extends MessageProcessor{ } } - private boolean doProcess (MemberReadyToShutdownEvent event,Topology topology) { + private boolean doProcess (MemberReadyToShutdownEvent event,Topology topology) throws InvalidLifecycleTransitionException { // Apply service filter if (TopologyServiceFilter.getInstance().isActive()) { http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberStartedMessageProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberStartedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberStartedMessageProcessor.java index 649a5b2..b55ea26 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberStartedMessageProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberStartedMessageProcessor.java @@ -25,6 +25,7 @@ import org.apache.stratos.messaging.domain.topology.Member; import org.apache.stratos.messaging.domain.topology.MemberStatus; import org.apache.stratos.messaging.domain.topology.Service; import org.apache.stratos.messaging.domain.topology.Topology; +import org.apache.stratos.messaging.domain.topology.lifecycle.InvalidLifecycleTransitionException; import org.apache.stratos.messaging.event.topology.MemberStartedEvent; import org.apache.stratos.messaging.message.filter.topology.TopologyClusterFilter; import org.apache.stratos.messaging.message.filter.topology.TopologyMemberFilter; @@ -59,6 +60,10 @@ public class MemberStartedMessageProcessor extends MessageProcessor { try { return doProcess(event, topology); + } catch (InvalidLifecycleTransitionException e) { + log.error(e); + return false; + } finally { TopologyUpdater.releaseWriteLockForCluster(event.getServiceName(), event.getClusterId()); } @@ -73,7 +78,7 @@ public class MemberStartedMessageProcessor extends MessageProcessor { } } - private boolean doProcess (MemberStartedEvent event,Topology topology) { + private boolean doProcess (MemberStartedEvent event,Topology topology) throws InvalidLifecycleTransitionException { // Apply service filter if (TopologyServiceFilter.getInstance().isActive()) { http://git-wip-us.apache.org/repos/asf/stratos/blob/4ec1d6fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberSuspendedMessageProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberSuspendedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberSuspendedMessageProcessor.java index b342104..56cc055 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberSuspendedMessageProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/MemberSuspendedMessageProcessor.java @@ -25,6 +25,7 @@ import org.apache.stratos.messaging.domain.topology.Member; import org.apache.stratos.messaging.domain.topology.MemberStatus; import org.apache.stratos.messaging.domain.topology.Service; import org.apache.stratos.messaging.domain.topology.Topology; +import org.apache.stratos.messaging.domain.topology.lifecycle.InvalidLifecycleTransitionException; import org.apache.stratos.messaging.event.topology.MemberSuspendedEvent; import org.apache.stratos.messaging.message.filter.topology.TopologyClusterFilter; import org.apache.stratos.messaging.message.filter.topology.TopologyMemberFilter; @@ -59,6 +60,10 @@ public class MemberSuspendedMessageProcessor extends MessageProcessor { try { return doProcess(event, topology); + } catch (InvalidLifecycleTransitionException e) { + log.error(e); + return false; + } finally { TopologyUpdater.releaseWriteLockForCluster(event.getServiceName(), event.getClusterId()); } @@ -73,7 +78,7 @@ public class MemberSuspendedMessageProcessor extends MessageProcessor { } } - private boolean doProcess (MemberSuspendedEvent event,Topology topology) { + private boolean doProcess (MemberSuspendedEvent event,Topology topology) throws InvalidLifecycleTransitionException { // Apply service filter if (TopologyServiceFilter.getInstance().isActive()) {
