Updated Branches: refs/heads/master 00675c8fe -> f413fdc41
adding instance cleanup handling to cartridge agent Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/f413fdc4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/f413fdc4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/f413fdc4 Branch: refs/heads/master Commit: f413fdc418a47a327ee353ab651fe5568b870c4b Parents: 00675c8 Author: rekathiru <[email protected]> Authored: Fri Jan 3 15:52:09 2014 +0530 Committer: rekathiru <[email protected]> Committed: Fri Jan 3 15:52:09 2014 +0530 ---------------------------------------------------------------------- .../stratos/cartridge/agent/CartridgeAgent.java | 27 +++++++++++++++++++- .../publisher/CartridgeAgentEventPublisher.java | 27 ++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f413fdc4/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java index ada94f7..62b39e0 100644 --- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java +++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java @@ -3,16 +3,18 @@ package org.apache.stratos.cartridge.agent; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.cartridge.agent.config.CartridgeAgentConfiguration; import org.apache.stratos.cartridge.agent.artifact.deployment.synchronizer.RepositoryInformation; import org.apache.stratos.cartridge.agent.artifact.deployment.synchronizer.git.impl.GitBasedArtifactRepository; +import org.apache.stratos.cartridge.agent.config.CartridgeAgentConfiguration; import org.apache.stratos.cartridge.agent.event.publisher.CartridgeAgentEventPublisher; import org.apache.stratos.cartridge.agent.util.CartridgeAgentConstants; import org.apache.stratos.cartridge.agent.util.CartridgeAgentUtils; import org.apache.stratos.cartridge.agent.util.ExtensionUtils; import org.apache.stratos.messaging.event.Event; import org.apache.stratos.messaging.event.instance.notifier.ArtifactUpdatedEvent; +import org.apache.stratos.messaging.event.instance.notifier.InstanceCleanupEvent; import org.apache.stratos.messaging.listener.instance.notifier.ArtifactUpdateEventListener; +import org.apache.stratos.messaging.listener.instance.notifier.InstanceCleanupEventListener; import org.apache.stratos.messaging.message.processor.instance.notifier.InstanceNotifierMessageProcessorChain; import org.apache.stratos.messaging.message.receiver.instance.notifier.InstanceNotifierEventMessageDelegator; import org.apache.stratos.messaging.message.receiver.instance.notifier.InstanceNotifierEventMessageReceiver; @@ -58,6 +60,13 @@ public class CartridgeAgent implements Runnable { onArtifactUpdateEvent((ArtifactUpdatedEvent) event); } }); + + processorChain.addEventListener(new InstanceCleanupEventListener() { + @Override + protected void onEvent(Event event) { + onInstanceCleanupEvent((InstanceCleanupEvent) event); + } + }); InstanceNotifierEventMessageDelegator messageDelegator = new InstanceNotifierEventMessageDelegator(processorChain); InstanceNotifierEventMessageReceiver messageReceiver = new InstanceNotifierEventMessageReceiver(messageDelegator); Thread messageReceiverThread = new Thread(messageReceiver); @@ -137,6 +146,22 @@ public class CartridgeAgent implements Runnable { } } + private void onInstanceCleanupEvent(InstanceCleanupEvent event) { + InstanceCleanupEvent instanceCleanupEvent = (InstanceCleanupEvent)event; + String memberIdInPayload = CartridgeAgentConfiguration.getInstance().getMemberId(); + String memberId = instanceCleanupEvent.getMemberId(); + if(memberId != null && memberId.equals(memberIdInPayload)) { + if(log.isInfoEnabled()) { + log.info("Executing cleaning up the data in the cartridge instance..."); + } + // TODO + //cleaning up the cartridge instance's data + + //publishing the Ready to shutdown event after performing the cleanup + CartridgeAgentEventPublisher.publishInstanceReadyToShutdownEvent(); + } + } + public void terminate() { terminated = true; } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f413fdc4/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java index e7be139..70b4989 100644 --- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java +++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java @@ -7,6 +7,7 @@ import org.apache.stratos.cartridge.agent.statistics.publisher.HealthStatisticsN import org.apache.stratos.cartridge.agent.util.ExtensionUtils; import org.apache.stratos.messaging.broker.publish.EventPublisher; import org.apache.stratos.messaging.event.instance.status.InstanceActivatedEvent; +import org.apache.stratos.messaging.event.instance.status.InstanceReadyToShutdownEvent; import org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent; import org.apache.stratos.messaging.util.Constants; @@ -17,6 +18,7 @@ public class CartridgeAgentEventPublisher { private static final Log log = LogFactory.getLog(CartridgeAgentEventPublisher.class); private static boolean started; private static boolean activated; + private static boolean readyToShutdown; public static void publishInstanceStartedEvent() { if (!started) { @@ -80,4 +82,29 @@ public class CartridgeAgentEventPublisher { } } } + + public static void publishInstanceReadyToShutdownEvent() { + if (!readyToShutdown) { + if (log.isInfoEnabled()) { + log.info("Publishing instance activated event"); + } + InstanceReadyToShutdownEvent event = new InstanceReadyToShutdownEvent( + CartridgeAgentConfiguration.getInstance().getServiceName(), + CartridgeAgentConfiguration.getInstance().getClusterId(), + CartridgeAgentConfiguration.getInstance().getNetworkPartitionId(), + CartridgeAgentConfiguration.getInstance().getPartitionId(), + CartridgeAgentConfiguration.getInstance().getMemberId()); + + EventPublisher eventPublisher = new EventPublisher(Constants.INSTANCE_STATUS_TOPIC); + eventPublisher.publish(event); + readyToShutdown = true; + if (log.isInfoEnabled()) { + log.info("Instance ReadyToShutDown event published"); + } + } else { + if (log.isWarnEnabled()) { + log.warn("Instance already sent ReadyToShutDown event...."); + } + } + } }
