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:09 UTC

[06/14] stratos git commit: making DomainMappingEventReceiver singleton and fixing references in components

making DomainMappingEventReceiver 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/c627ff18
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c627ff18
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c627ff18

Branch: refs/heads/master
Commit: c627ff18f6c4d84c3cd42762e580e55128d80e07
Parents: 6ac3b87
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Wed Dec 2 18:22:37 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Thu Dec 24 20:04:39 2015 +0530

----------------------------------------------------------------------
 ...alancerCommonDomainMappingEventReceiver.java |  8 ++++---
 .../extension/api/LoadBalancerExtension.java    |  9 ++++----
 .../internal/LoadBalancerServiceComponent.java  | 24 ++++++++++----------
 .../mapping/DomainMappingEventReceiver.java     | 21 ++++++++++++++---
 4 files changed, 40 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/c627ff18/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonDomainMappingEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonDomainMappingEventReceiver.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonDomainMappingEventReceiver.java
index a51ed22..c0d9f81 100644
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonDomainMappingEventReceiver.java
+++ b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonDomainMappingEventReceiver.java
@@ -34,13 +34,15 @@ import org.apache.stratos.messaging.message.receiver.domain.mapping.DomainMappin
  * Load balancer common domain mapping event receiver updates the topology in the given topology provider
  * with the domains found in domain mapping events.
  */
-public class LoadBalancerCommonDomainMappingEventReceiver extends DomainMappingEventReceiver {
+public class LoadBalancerCommonDomainMappingEventReceiver {
 
     private static final Log log = LogFactory.getLog(LoadBalancerCommonDomainMappingEventReceiver.class);
 
     private TopologyProvider topologyProvider;
+    private DomainMappingEventReceiver domainMappingEventReceiver;
 
     public LoadBalancerCommonDomainMappingEventReceiver(TopologyProvider topologyProvider) {
+        this.domainMappingEventReceiver = DomainMappingEventReceiver.getInstance();
         this.topologyProvider = topologyProvider;
         addEventListeners();
     }
@@ -57,7 +59,7 @@ public class LoadBalancerCommonDomainMappingEventReceiver extends DomainMappingE
      * domain mapping events.
      */
     public void addEventListeners() {
-        addEventListener(new DomainMappingAddedEventListener() {
+        domainMappingEventReceiver.addEventListener(new DomainMappingAddedEventListener() {
             @Override
             protected void onEvent(Event event) {
                 DomainMappingAddedEvent domainMappingAddedEvent = (DomainMappingAddedEvent) event;
@@ -75,7 +77,7 @@ public class LoadBalancerCommonDomainMappingEventReceiver extends DomainMappingE
             }
         });
 
-        addEventListener(new DomainMappingRemovedEventListener() {
+        domainMappingEventReceiver.addEventListener(new DomainMappingRemovedEventListener() {
             @Override
             protected void onEvent(Event event) {
                 DomainMappingRemovedEvent domainMappingRemovedEvent = (DomainMappingRemovedEvent) event;

http://git-wip-us.apache.org/repos/asf/stratos/blob/c627ff18/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 d2a8cb3..c2ee077 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
@@ -39,6 +39,7 @@ import org.apache.stratos.messaging.message.filter.topology.TopologyClusterFilte
 import org.apache.stratos.messaging.message.filter.topology.TopologyMemberFilter;
 import org.apache.stratos.messaging.message.filter.topology.TopologyServiceFilter;
 import org.apache.stratos.messaging.message.receiver.application.ApplicationsEventReceiver;
+import org.apache.stratos.messaging.message.receiver.domain.mapping.DomainMappingEventReceiver;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyEventReceiver;
 
 import java.util.concurrent.ExecutorService;
@@ -170,8 +171,8 @@ public class LoadBalancerExtension {
         addDomainMappingsEventListeners(domainMappingEventReceiver);
         // Add default domain mapping event listeners
         domainMappingEventReceiver.addEventListeners();
-        domainMappingEventReceiver.setExecutorService(executorService);
-        domainMappingEventReceiver.execute();
+//        domainMappingEventReceiver.setExecutorService(executorService);
+//        domainMappingEventReceiver.execute();
         if (log.isInfoEnabled()) {
             log.info("Domain mapping event receiver thread started");
         }
@@ -179,14 +180,14 @@ public class LoadBalancerExtension {
 
     private void addDomainMappingsEventListeners(final LoadBalancerCommonDomainMappingEventReceiver
                                                          domainMappingEventReceiver) {
-        domainMappingEventReceiver.addEventListener(new DomainMappingAddedEventListener() {
+        DomainMappingEventReceiver.getInstance().addEventListener(new DomainMappingAddedEventListener() {
             @Override
             protected void onEvent(Event event) {
                 reloadConfiguration();
             }
         });
 
-        domainMappingEventReceiver.addEventListener(new DomainMappingRemovedEventListener() {
+        DomainMappingEventReceiver.getInstance().addEventListener(new DomainMappingRemovedEventListener() {
             @Override
             protected void onEvent(Event event) {
                 reloadConfiguration();

http://git-wip-us.apache.org/repos/asf/stratos/blob/c627ff18/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 e772322..3786af8 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
@@ -173,11 +173,11 @@ public class LoadBalancerServiceComponent {
         }
 
         domainMappingEventReceiver = new LoadBalancerDomainMappingEventReceiver(topologyProvider);
-        domainMappingEventReceiver.setExecutorService(executorService);
-        domainMappingEventReceiver.execute();
-        if (log.isInfoEnabled()) {
-            log.info("Domain mapping event receiver thread started");
-        }
+//        domainMappingEventReceiver.setExecutorService(executorService);
+//        domainMappingEventReceiver.execute();
+//        if (log.isInfoEnabled()) {
+//            log.info("Domain mapping event receiver thread started");
+//        }
     }
 
     private void startApplicationSignUpEventReceiver(ExecutorService executorService, TopologyProvider topologyProvider) {
@@ -275,13 +275,13 @@ public class LoadBalancerServiceComponent {
 //        }
 
         // Terminate domain mapping event receiver
-        if (domainMappingEventReceiver != null) {
-            try {
-                domainMappingEventReceiver.terminate();
-            } catch (Exception e) {
-                log.warn("An error occurred while terminating domain mapping event receiver", e);
-            }
-        }
+//        if (domainMappingEventReceiver != null) {
+//            try {
+//                domainMappingEventReceiver.terminate();
+//            } catch (Exception e) {
+//                log.warn("An error occurred while terminating domain mapping event receiver", e);
+//            }
+//        }
 
         // Terminate statistics notifier
         if (statisticsNotifier != null) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/c627ff18/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/domain/mapping/DomainMappingEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/domain/mapping/DomainMappingEventReceiver.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/domain/mapping/DomainMappingEventReceiver.java
index 1d582b5..3c723a3 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/domain/mapping/DomainMappingEventReceiver.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/domain/mapping/DomainMappingEventReceiver.java
@@ -21,8 +21,10 @@ package org.apache.stratos.messaging.message.receiver.domain.mapping;
 
 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.subscribe.EventSubscriber;
 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;
@@ -30,16 +32,18 @@ import java.util.concurrent.ExecutorService;
 /**
  * Domain mapping event receiver.
  */
-public class DomainMappingEventReceiver {
+public class DomainMappingEventReceiver extends StratosEventReceiver {
 
     private static final Log log = LogFactory.getLog(DomainMappingEventReceiver.class);
 
     private DomainMappingEventMessageDelegator messageDelegator;
     private DomainMappingEventMessageListener messageListener;
     private EventSubscriber eventSubscriber;
-    private ExecutorService executorService;
+    private static volatile DomainMappingEventReceiver instance;
 
-    public DomainMappingEventReceiver() {
+    private DomainMappingEventReceiver() {
+        // TODO: make pool size configurable
+        this.executorService = StratosThreadPool.getExecutorService("domainmapping-event-receiver", 100);
         DomainMappingEventMessageQueue messageQueue = new DomainMappingEventMessageQueue();
         this.messageDelegator = new DomainMappingEventMessageDelegator(messageQueue);
         this.messageListener = new DomainMappingEventMessageListener(messageQueue);
@@ -49,6 +53,17 @@ public class DomainMappingEventReceiver {
         messageDelegator.addEventListener(eventListener);
     }
 
+    public static DomainMappingEventReceiver getInstance () {
+        if (instance == null) {
+            synchronized (DomainMappingEventReceiver.class) {
+                if (instance == null) {
+                    instance = new DomainMappingEventReceiver();
+                }
+            }
+        }
+
+        return instance;
+    }
 
     public void execute() {
         try {