making ApplicationsEventReceiver singleton and fixing references in components
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/f302906a Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/f302906a Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/f302906a Branch: refs/heads/master Commit: f302906abd4218673dbe648fc8254fcdf9c2ae3b Parents: 27ae4ba Author: Isuru Haththotuwa <[email protected]> Authored: Wed Dec 2 18:48:14 2015 +0530 Committer: Isuru Haththotuwa <[email protected]> Committed: Thu Dec 24 20:05:04 2015 +0530 ---------------------------------------------------------------------- .../CloudControllerServiceComponent.java | 4 +-- .../application/ApplicationEventReceiver.java | 24 ++++++------- .../extension/api/LoadBalancerExtension.java | 6 ++-- .../StratosManagerServiceComponent.java | 4 +-- .../StratosManagerApplicationEventReceiver.java | 19 +++++----- .../application/ApplicationsEventReceiver.java | 37 ++++++++++++++------ .../MetadataApplicationEventReceiver.java | 31 ++++++++-------- .../service/registry/MetadataApiRegistry.java | 8 ++--- 8 files changed, 75 insertions(+), 58 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/f302906a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java index 74d36e7..c4c0336 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java @@ -146,8 +146,8 @@ public class CloudControllerServiceComponent { private void executeCoordinatorTasks() { applicationEventReceiver = new ApplicationEventReceiver(); - applicationEventReceiver.setExecutorService(executorService); - applicationEventReceiver.execute(); +// applicationEventReceiver.setExecutorService(executorService); +// applicationEventReceiver.execute(); if (log.isInfoEnabled()) { log.info("Application event receiver thread started"); http://git-wip-us.apache.org/repos/asf/stratos/blob/f302906a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/receiver/application/ApplicationEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/receiver/application/ApplicationEventReceiver.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/receiver/application/ApplicationEventReceiver.java index bd35e25..8da5575 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/receiver/application/ApplicationEventReceiver.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/receiver/application/ApplicationEventReceiver.java @@ -37,20 +37,20 @@ import java.util.concurrent.ExecutorService; public class ApplicationEventReceiver { private static final Log log = LogFactory.getLog(ApplicationEventReceiver.class); private ApplicationsEventReceiver applicationsEventReceiver; - private ExecutorService executorService; + // private ExecutorService executorService; public ApplicationEventReceiver() { - this.applicationsEventReceiver = new ApplicationsEventReceiver(); + this.applicationsEventReceiver = ApplicationsEventReceiver.getInstance(); addEventListeners(); } - public void execute() { - if (log.isInfoEnabled()) { - log.info("Cloud controller application event receiver thread started"); - } - applicationsEventReceiver.setExecutorService(executorService); - applicationsEventReceiver.execute(); - } +// public void execute() { +// if (log.isInfoEnabled()) { +// log.info("Cloud controller application event receiver thread started"); +// } +// applicationsEventReceiver.setExecutorService(executorService); +// applicationsEventReceiver.execute(); +// } private void addEventListeners() { applicationsEventReceiver.addEventListener(new ApplicationInstanceTerminatedEventListener() { @@ -76,7 +76,7 @@ public class ApplicationEventReceiver { }); } - public void setExecutorService(ExecutorService executorService) { - this.executorService = executorService; - } +// public void setExecutorService(ExecutorService executorService) { +// this.executorService = executorService; +// } } http://git-wip-us.apache.org/repos/asf/stratos/blob/f302906a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java index c2ee077..ec1ddbc 100644 --- a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java +++ b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java @@ -150,9 +150,9 @@ public class LoadBalancerExtension { } private void startApplicationEventReceiver(ExecutorService executorService) { - applicationsEventReceiver = new ApplicationsEventReceiver(); - applicationsEventReceiver.setExecutorService(executorService); - applicationsEventReceiver.execute(); + applicationsEventReceiver = ApplicationsEventReceiver.getInstance(); +// applicationsEventReceiver.setExecutorService(executorService); +// applicationsEventReceiver.execute(); if (log.isInfoEnabled()) { log.info("Application event receiver thread started"); } http://git-wip-us.apache.org/repos/asf/stratos/blob/f302906a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java index ed45852..573c19d 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java @@ -220,8 +220,8 @@ public class StratosManagerServiceComponent { */ private void initializeApplicationEventReceiver() { applicationEventReceiver = new StratosManagerApplicationEventReceiver(); - applicationEventReceiver.setExecutorService(executorService); - applicationEventReceiver.execute(); +// applicationEventReceiver.setExecutorService(executorService); +// applicationEventReceiver.execute(); } /** http://git-wip-us.apache.org/repos/asf/stratos/blob/f302906a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/messaging/receiver/StratosManagerApplicationEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/messaging/receiver/StratosManagerApplicationEventReceiver.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/messaging/receiver/StratosManagerApplicationEventReceiver.java index b6ce035..ff85c83 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/messaging/receiver/StratosManagerApplicationEventReceiver.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/messaging/receiver/StratosManagerApplicationEventReceiver.java @@ -26,23 +26,22 @@ import org.apache.stratos.messaging.message.receiver.application.ApplicationsEve /** * Stratos manager application event receiver. */ -public class StratosManagerApplicationEventReceiver extends ApplicationsEventReceiver { +public class StratosManagerApplicationEventReceiver { private static final Log log = LogFactory.getLog(StratosManagerApplicationEventReceiver.class); public StratosManagerApplicationEventReceiver() { addEventListeners(); - } - @Override - public void execute() { - super.execute(); - - if (log.isInfoEnabled()) { - log.info("Stratos manager application event receiver thread started"); - } - } +// @Override +// public void execute() { +// super.execute(); +// +// if (log.isInfoEnabled()) { +// log.info("Stratos manager application event receiver thread started"); +// } +// } private void addEventListeners() { } http://git-wip-us.apache.org/repos/asf/stratos/blob/f302906a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/application/ApplicationsEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/application/ApplicationsEventReceiver.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/application/ApplicationsEventReceiver.java index 9306ad2..e94bafd 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/application/ApplicationsEventReceiver.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/application/ApplicationsEventReceiver.java @@ -20,27 +20,44 @@ package org.apache.stratos.messaging.message.receiver.application; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.common.threading.StratosThreadPool; import org.apache.stratos.messaging.broker.publish.EventPublisher; import org.apache.stratos.messaging.broker.publish.EventPublisherPool; import org.apache.stratos.messaging.broker.subscribe.EventSubscriber; import org.apache.stratos.messaging.event.initializer.CompleteApplicationsRequestEvent; import org.apache.stratos.messaging.listener.EventListener; +import org.apache.stratos.messaging.message.receiver.StratosEventReceiver; import org.apache.stratos.messaging.util.MessagingUtil; import java.util.concurrent.ExecutorService; -public class ApplicationsEventReceiver { +public class ApplicationsEventReceiver extends StratosEventReceiver{ private static final Log log = LogFactory.getLog(ApplicationsEventReceiver.class); private ApplicationsEventMessageDelegator messageDelegator; private ApplicationsEventMessageListener messageListener; private EventSubscriber eventSubscriber; - private ExecutorService executorService; + private static volatile ApplicationsEventReceiver instance; - public ApplicationsEventReceiver() { + private ApplicationsEventReceiver() { + // TODO: make pool size configurable + this.executorService = StratosThreadPool.getExecutorService("application-event-receiver", 100); ApplicationsEventMessageQueue messageQueue = new ApplicationsEventMessageQueue(); this.messageDelegator = new ApplicationsEventMessageDelegator(messageQueue); this.messageListener = new ApplicationsEventMessageListener(messageQueue); + execute(); + } + + public static ApplicationsEventReceiver getInstance () { + if (instance == null) { + synchronized (ApplicationsEventReceiver.class) { + if (instance == null) { + instance = new ApplicationsEventReceiver(); + } + } + } + + return instance; } public void addEventListener(EventListener eventListener) { @@ -101,11 +118,11 @@ public class ApplicationsEventReceiver { }); } - public ExecutorService getExecutorService() { - return executorService; - } - - public void setExecutorService(ExecutorService executorService) { - this.executorService = executorService; - } +// public ExecutorService getExecutorService() { +// return executorService; +// } +// +// public void setExecutorService(ExecutorService executorService) { +// this.executorService = executorService; +// } } http://git-wip-us.apache.org/repos/asf/stratos/blob/f302906a/components/org.apache.stratos.metadata.service/src/main/java/org/apache/stratos/metadata/service/MetadataApplicationEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.metadata.service/src/main/java/org/apache/stratos/metadata/service/MetadataApplicationEventReceiver.java b/components/org.apache.stratos.metadata.service/src/main/java/org/apache/stratos/metadata/service/MetadataApplicationEventReceiver.java index ca00c3c..e1bf929 100644 --- a/components/org.apache.stratos.metadata.service/src/main/java/org/apache/stratos/metadata/service/MetadataApplicationEventReceiver.java +++ b/components/org.apache.stratos.metadata.service/src/main/java/org/apache/stratos/metadata/service/MetadataApplicationEventReceiver.java @@ -40,11 +40,12 @@ import java.util.concurrent.ExecutorService; public class MetadataApplicationEventReceiver { private static final Log log = LogFactory.getLog(MetadataApplicationEventReceiver.class); private ApplicationsEventReceiver applicationsEventReceiver; - private ExecutorService executorService; + //private ExecutorService executorService; public MetadataApplicationEventReceiver() { - this.applicationsEventReceiver = new ApplicationsEventReceiver(); - executorService = StratosThreadPool.getExecutorService(Constants.METADATA_SERVICE_THREAD_POOL_ID, 20); + this.applicationsEventReceiver = ApplicationsEventReceiver.getInstance(); + //executorService = StratosThreadPool.getExecutorService(Constants + // .METADATA_SERVICE_THREAD_POOL_ID, 20); addEventListeners(); } @@ -65,19 +66,19 @@ public class MetadataApplicationEventReceiver { if (log.isDebugEnabled()) { log.debug("Metadata service READ WRITE locks initialized on complete applications event."); } - terminate(); + //terminate(); } }); } - public void execute() { - applicationsEventReceiver.setExecutorService(getExecutorService()); - applicationsEventReceiver.execute(); - - if (log.isInfoEnabled()) { - log.info("Metadata service application receiver started."); - } - } +// public void execute() { +// applicationsEventReceiver.setExecutorService(getExecutorService()); +// applicationsEventReceiver.execute(); +// +// if (log.isInfoEnabled()) { +// log.info("Metadata service application receiver started."); +// } +// } public void terminate() { applicationsEventReceiver.terminate(); @@ -86,8 +87,8 @@ public class MetadataApplicationEventReceiver { } } - public ExecutorService getExecutorService() { - return executorService; - } + // public ExecutorService getExecutorService() { +// return executorService; +// } } http://git-wip-us.apache.org/repos/asf/stratos/blob/f302906a/components/org.apache.stratos.metadata.service/src/main/java/org/apache/stratos/metadata/service/registry/MetadataApiRegistry.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.metadata.service/src/main/java/org/apache/stratos/metadata/service/registry/MetadataApiRegistry.java b/components/org.apache.stratos.metadata.service/src/main/java/org/apache/stratos/metadata/service/registry/MetadataApiRegistry.java index 47fc600..abb21ba 100644 --- a/components/org.apache.stratos.metadata.service/src/main/java/org/apache/stratos/metadata/service/registry/MetadataApiRegistry.java +++ b/components/org.apache.stratos.metadata.service/src/main/java/org/apache/stratos/metadata/service/registry/MetadataApiRegistry.java @@ -59,7 +59,7 @@ public class MetadataApiRegistry implements DataStore { // metadataTopologyEventReceiver.execute(); metadataApplicationEventReceiver = new MetadataApplicationEventReceiver(); - metadataApplicationEventReceiver.execute(); +// metadataApplicationEventReceiver.execute(); } /** @@ -421,7 +421,7 @@ public class MetadataApiRegistry implements DataStore { // metadataTopologyEventReceiver.terminate(); // } - public void stopApplicationReceiver() { - metadataApplicationEventReceiver.terminate(); - } +// public void stopApplicationReceiver() { +// metadataApplicationEventReceiver.terminate(); +// } }
