You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2015/12/24 15:56:06 UTC

[03/14] stratos git commit: making TenantEventReceiver a singleton and fixing the references in the components

making TenantEventReceiver a singleton and fixing the references in the components


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

Branch: refs/heads/master
Commit: 170c27cc61aaddcb2a28239e98ad11b438b421bb
Parents: b3dc546
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Wed Dec 2 17:49:15 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Thu Dec 24 20:04:05 2015 +0530

----------------------------------------------------------------------
 .../agent/CartridgeAgentEventListeners.java     |  4 +--
 .../internal/LoadBalancerServiceComponent.java  |  6 ++--
 .../receiver/tenant/TenantEventReceiver.java    | 31 +++++++++++++++-----
 3 files changed, 29 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/170c27cc/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgentEventListeners.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgentEventListeners.java b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgentEventListeners.java
index 1d64ff0..ffa3750 100644
--- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgentEventListeners.java
+++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgentEventListeners.java
@@ -79,8 +79,8 @@ public class CartridgeAgentEventListeners {
 
         this.instanceNotifierEventReceiver = new InstanceNotifierEventReceiver();
 
-        this.tenantEventReceiver = new TenantEventReceiver();
-        this.tenantEventReceiver.setExecutorService(eventListenerExecutorService);
+        this.tenantEventReceiver = TenantEventReceiver.getInstance();
+//        this.tenantEventReceiver.setExecutorService(eventListenerExecutorService);
 
         extensionHandler = new DefaultExtensionHandler();
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/170c27cc/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/internal/LoadBalancerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/internal/LoadBalancerServiceComponent.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/internal/LoadBalancerServiceComponent.java
index 442686a..e772322 100644
--- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/internal/LoadBalancerServiceComponent.java
+++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/internal/LoadBalancerServiceComponent.java
@@ -225,9 +225,9 @@ public class LoadBalancerServiceComponent {
 
     private void startTenantEventReceiver(ExecutorService executorService) {
 
-        tenantEventReceiver = new TenantEventReceiver();
-        tenantEventReceiver.setExecutorService(executorService);
-        tenantEventReceiver.execute();
+        tenantEventReceiver = TenantEventReceiver.getInstance();
+//        tenantEventReceiver.setExecutorService(executorService);
+//        tenantEventReceiver.execute();
         if (log.isInfoEnabled()) {
             log.info("Tenant event receiver thread started");
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/170c27cc/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/tenant/TenantEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/tenant/TenantEventReceiver.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/tenant/TenantEventReceiver.java
index 988a2ce..1c519b9 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/tenant/TenantEventReceiver.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/tenant/TenantEventReceiver.java
@@ -21,11 +21,13 @@ package org.apache.stratos.messaging.message.receiver.tenant;
 
 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.CompleteTenantRequestEvent;
 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;
@@ -34,28 +36,43 @@ import java.util.concurrent.ExecutorService;
  * A thread for receiving tenant information from message broker and
  * build tenant information in tenant manager.
  */
-public class TenantEventReceiver {
+public class TenantEventReceiver extends StratosEventReceiver {
     private static final Log log = LogFactory.getLog(TenantEventReceiver.class);
     private TenantEventMessageDelegator messageDelegator;
     private TenantEventMessageListener messageListener;
     private EventSubscriber eventSubscriber;
-    private ExecutorService executorService;
+    private static volatile TenantEventReceiver instance;
 
-    public TenantEventReceiver() {
+    private TenantEventReceiver() {
+        // TODO: make pool size configurable
+        this.executorService = StratosThreadPool.getExecutorService("tenant-event-receiver", 100);
         TenantEventMessageQueue messageQueue = new TenantEventMessageQueue();
         this.messageDelegator = new TenantEventMessageDelegator(messageQueue);
         this.messageListener = new TenantEventMessageListener(messageQueue);
+        execute();
+    }
+
+    public static TenantEventReceiver getInstance () {
+        if (instance == null) {
+            synchronized (TenantEventReceiver.class) {
+                if (instance == null) {
+                    instance = new TenantEventReceiver();
+                }
+            }
+        }
+
+        return instance;
     }
 
     public void addEventListener(EventListener eventListener) {
         messageDelegator.addEventListener(eventListener);
     }
 
-    public void setExecutorService(ExecutorService executorService) {
-        this.executorService = executorService;
-    }
+//    public void setExecutorService(ExecutorService executorService) {
+//        this.executorService = executorService;
+//    }
 
-    public void execute() {
+    private void execute() {
         try {
             // Start topic subscriber thread
             eventSubscriber = new EventSubscriber(MessagingUtil.Topics.TENANT_TOPIC.getTopicName(), messageListener);