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

Branch: refs/heads/stratos-4.1.x
Commit: 5d29c8f03a2f5809fd82f9bc495622b181359742
Parents: fb5576e
Author: Isuru Haththotuwa <[email protected]>
Authored: Wed Dec 2 18:09:04 2015 +0530
Committer: Isuru Haththotuwa <[email protected]>
Committed: Mon Dec 7 18:48:09 2015 +0530

----------------------------------------------------------------------
 .../AutoscalerHealthStatEventReceiver.java      | 18 +++----
 .../internal/AutoscalerServiceComponent.java    |  4 +-
 .../health/stat/HealthStatEventReceiver.java    | 52 +++++++++++++-------
 3 files changed, 45 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/5d29c8f0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/health/AutoscalerHealthStatEventReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/health/AutoscalerHealthStatEventReceiver.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/health/AutoscalerHealthStatEventReceiver.java
index b8482f0..0b13500 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/health/AutoscalerHealthStatEventReceiver.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/health/AutoscalerHealthStatEventReceiver.java
@@ -45,18 +45,18 @@ public class AutoscalerHealthStatEventReceiver {
     private ExecutorService executorService;
 
     public AutoscalerHealthStatEventReceiver() {
-        this.healthStatEventReceiver = new HealthStatEventReceiver();
+        this.healthStatEventReceiver = HealthStatEventReceiver.getInstance();
         addEventListeners();
     }
 
-    public void execute() {
-        healthStatEventReceiver.setExecutorService(executorService);
-        healthStatEventReceiver.execute();
-
-        if (log.isInfoEnabled()) {
-            log.info("Autoscaler health stat event receiver thread started");
-        }
-    }
+//    public void execute() {
+//        healthStatEventReceiver.setExecutorService(executorService);
+//        healthStatEventReceiver.execute();
+//
+//        if (log.isInfoEnabled()) {
+//            log.info("Autoscaler health stat event receiver thread started");
+//        }
+//    }
 
     private void addEventListeners() {
         // Listen to health stat events that affect clusters

http://git-wip-us.apache.org/repos/asf/stratos/blob/5d29c8f0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
index ba7c341..bb28577 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
@@ -181,8 +181,8 @@ public class AutoscalerServiceComponent {
 
         // Start health stat receiver
         autoscalerHealthStatEventReceiver = new 
AutoscalerHealthStatEventReceiver();
-        autoscalerHealthStatEventReceiver.setExecutorService(executorService);
-        autoscalerHealthStatEventReceiver.execute();
+//        
autoscalerHealthStatEventReceiver.setExecutorService(executorService);
+//        autoscalerHealthStatEventReceiver.execute();
         if (log.isDebugEnabled()) {
             log.debug("Health statistics receiver thread started");
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/5d29c8f0/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/health/stat/HealthStatEventReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/health/stat/HealthStatEventReceiver.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/health/stat/HealthStatEventReceiver.java
index e73a326..ede8f17 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/health/stat/HealthStatEventReceiver.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/health/stat/HealthStatEventReceiver.java
@@ -21,8 +21,10 @@ package 
org.apache.stratos.messaging.message.receiver.health.stat;
 
 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,19 +32,33 @@ import java.util.concurrent.ExecutorService;
 /**
  * A thread for receiving health stat information from message broker
  */
-public class HealthStatEventReceiver {
+public class HealthStatEventReceiver extends StratosEventReceiver {
     private static final Log log = 
LogFactory.getLog(HealthStatEventReceiver.class);
 
     private final HealthStatEventMessageDelegator messageDelegator;
     private final HealthStatEventMessageListener messageListener;
     private EventSubscriber eventSubscriber;
-    private boolean terminated;
-    private ExecutorService executorService;
+    private static volatile HealthStatEventReceiver instance;
 
-    public HealthStatEventReceiver() {
+    private HealthStatEventReceiver() {
+        // TODO: make pool size configurable
+        this.executorService = 
StratosThreadPool.getExecutorService("healthstat-event-receiver", 100);
         HealthStatEventMessageQueue messageQueue = new 
HealthStatEventMessageQueue();
         this.messageDelegator = new 
HealthStatEventMessageDelegator(messageQueue);
         this.messageListener = new 
HealthStatEventMessageListener(messageQueue);
+        execute();
+    }
+
+    public static HealthStatEventReceiver getInstance () {
+        if (instance == null) {
+            synchronized (HealthStatEventReceiver.class) {
+                if (instance == null) {
+                    instance = new HealthStatEventReceiver();
+                }
+            }
+        }
+
+        return instance;
     }
 
     public void addEventListener(EventListener eventListener) {
@@ -50,7 +66,7 @@ public class HealthStatEventReceiver {
     }
 
 
-    public void execute() {
+    private void execute() {
         try {
             // Start topic subscriber thread
             eventSubscriber = new 
EventSubscriber(MessagingUtil.Topics.HEALTH_STAT_TOPIC.getTopicName(), 
messageListener);
@@ -69,17 +85,17 @@ public class HealthStatEventReceiver {
         }
     }
 
-    public void terminate() {
-        eventSubscriber.terminate();
-        messageDelegator.terminate();
-        terminated = true;
-    }
-
-    public ExecutorService getExecutorService() {
-        return executorService;
-    }
-
-    public void setExecutorService(ExecutorService executorService) {
-        this.executorService = executorService;
-    }
+//    public void terminate() {
+//        eventSubscriber.terminate();
+//        messageDelegator.terminate();
+//        terminated = true;
+//    }
+//
+//    public ExecutorService getExecutorService() {
+//        return executorService;
+//    }
+//
+//    public void setExecutorService(ExecutorService executorService) {
+//        this.executorService = executorService;
+//    }
 }

Reply via email to