You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2014/12/12 11:11:38 UTC

[36/50] stratos git commit: Fixing mock statistics update issue

Fixing mock statistics update issue


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

Branch: refs/heads/master
Commit: 500c4af3bfc18bbd51aca93fcac097e1dafa3737
Parents: 98fd547
Author: Imesh Gunaratne <im...@apache.org>
Authored: Fri Dec 12 00:21:54 2014 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Fri Dec 12 00:21:54 2014 +0530

----------------------------------------------------------------------
 .../controller/iaases/mock/MockIaasService.java | 16 +++++------
 .../controller/iaases/mock/MockMember.java      |  6 ++---
 .../MockHealthStatisticsGenerator.java          | 28 +++++++++++++++-----
 .../generator/MockHealthStatisticsUpdater.java  |  6 +++--
 .../publisher/MockHealthStatisticsNotifier.java |  2 +-
 .../CloudControllerServiceComponent.java        |  4 +--
 6 files changed, 38 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/500c4af3/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaasService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaasService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaasService.java
index a68bab5..ee9394a 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaasService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaasService.java
@@ -85,18 +85,16 @@ public class MockIaasService {
     }
 
     /**
-     * Start mock members if present in registry
+     * Start mock members
      */
-    public static void startMockMembersIfPresentInRegistry() {
-        ConcurrentHashMap<String, MockMember> membersMap = readFromRegistry();
+    public void startMockMembers() {
         if((membersMap != null) && (membersMap.size() > 0)) {
             // Start existing mock members
-            ExecutorService executorService = StratosThreadPool.getExecutorService("MOCK_IAAS_THREAD_EXECUTOR", 100);
             for (MockMember mockMember : membersMap.values()) {
-                executorService.submit(mockMember);
+                mockMemberExecutorService.submit(mockMember);
             }
             // Schedule health statistics updaters
-            MockHealthStatisticsGenerator.scheduleStatisticsUpdaters();
+            MockHealthStatisticsGenerator.getInstance().scheduleStatisticsUpdaters();
         }
     }
 
@@ -117,8 +115,8 @@ public class MockIaasService {
             // Persist changes
             persistInRegistry();
 
-            if(!MockHealthStatisticsGenerator.isScheduled()) {
-                MockHealthStatisticsGenerator.scheduleStatisticsUpdaters();
+            if(!MockHealthStatisticsGenerator.getInstance().isScheduled()) {
+                MockHealthStatisticsGenerator.getInstance().scheduleStatisticsUpdaters();
             }
 
             return nodeMetadata;
@@ -197,7 +195,7 @@ public class MockIaasService {
             }
 
             if(membersMap.size() == 0) {
-                MockHealthStatisticsGenerator.stopStatisticsUpdaters();
+                MockHealthStatisticsGenerator.getInstance().stopStatisticsUpdaters();
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/500c4af3/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockMember.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockMember.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockMember.java
index e22ea57..bae22da 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockMember.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockMember.java
@@ -42,11 +42,9 @@ public class MockMember implements Runnable, Serializable {
 
     private static final Log log = LogFactory.getLog(MockMember.class);
     private static final ExecutorService instanceNotifierExecutorService =
-            StratosThreadPool.getExecutorService("MOCK_MEMBER_INSTANCE_NOTIFIER_EXECUTOR_SERVICE",
-                    MockConstants.MAX_MOCK_MEMBER_COUNT);
+            StratosThreadPool.getExecutorService("MOCK_MEMBER_INSTANCE_NOTIFIER_EXECUTOR_SERVICE", 20);
     private static final ScheduledExecutorService healthStatNotifierExecutorService =
-            StratosThreadPool.getScheduledExecutorService("MOCK_MEMBER_HEALTH_STAT_NOTIFIER_EXECUTOR_SERVICE",
-                    MockConstants.MAX_MOCK_MEMBER_COUNT);
+            StratosThreadPool.getScheduledExecutorService("MOCK_MEMBER_HEALTH_STAT_NOTIFIER_EXECUTOR_SERVICE", 20);
     private static final int HEALTH_STAT_INTERVAL = 15; // 15 seconds
 
     private final MockMemberContext mockMemberContext;

http://git-wip-us.apache.org/repos/asf/stratos/blob/500c4af3/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/generator/MockHealthStatisticsGenerator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/generator/MockHealthStatisticsGenerator.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/generator/MockHealthStatisticsGenerator.java
index c4fe8fd..db72225 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/generator/MockHealthStatisticsGenerator.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/generator/MockHealthStatisticsGenerator.java
@@ -35,11 +35,27 @@ public class MockHealthStatisticsGenerator {
 
     private static final Log log = LogFactory.getLog(MockHealthStatisticsGenerator.class);
 
-    private static ScheduledExecutorService scheduledExecutorService =
-            StratosThreadPool.getScheduledExecutorService("MOCK_STATISTICS_GENERATOR_EXECUTOR_SERVICE", 100);
-    private static boolean scheduled;
+    private static volatile MockHealthStatisticsGenerator instance;
+    private static final ScheduledExecutorService scheduledExecutorService =
+            StratosThreadPool.getScheduledExecutorService("MOCK_STATISTICS_GENERATOR_EXECUTOR_SERVICE", 10);
 
-    public static void scheduleStatisticsUpdaters() {
+    private boolean scheduled;
+
+    public static MockHealthStatisticsGenerator getInstance() {
+        if (instance == null) {
+            synchronized (MockHealthStatisticsGenerator.class) {
+                if (instance == null) {
+                    instance = new MockHealthStatisticsGenerator();
+                }
+            }
+        }
+        return instance;
+    }
+
+    private MockHealthStatisticsGenerator() {
+    }
+
+    public void scheduleStatisticsUpdaters() {
         if(!scheduled) {
             synchronized (MockHealthStatisticsGenerator.class) {
                 if(!scheduled) {
@@ -60,13 +76,13 @@ public class MockHealthStatisticsGenerator {
         }
     }
 
-    public static void stopStatisticsUpdaters() {
+    public void stopStatisticsUpdaters() {
         synchronized (MockHealthStatisticsGenerator.class) {
             scheduledExecutorService.shutdownNow();
         }
     }
 
-    public static boolean isScheduled() {
+    public boolean isScheduled() {
         return scheduled;
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/500c4af3/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/generator/MockHealthStatisticsUpdater.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/generator/MockHealthStatisticsUpdater.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/generator/MockHealthStatisticsUpdater.java
index 8d61887..fd697a2 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/generator/MockHealthStatisticsUpdater.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/generator/MockHealthStatisticsUpdater.java
@@ -29,7 +29,7 @@ import org.apache.stratos.cloud.controller.iaases.mock.statistics.MockHealthStat
  */
 public class MockHealthStatisticsUpdater implements Runnable {
 
-    private static final Log log = LogFactory.getLog(MockHealthStatisticsGenerator.class);
+    private static final Log log = LogFactory.getLog(MockHealthStatisticsUpdater.class);
 
     private MockHealthStatisticsPattern statisticsPattern;
 
@@ -47,9 +47,11 @@ public class MockHealthStatisticsUpdater implements Runnable {
                     statisticsPattern.getFactor(), nextSample);
 
             if (log.isInfoEnabled()) {
-                log.info(String.format("Mock statistics updated: [cartridge-type] %s [factor] % [value] %d",
+                log.info(String.format("Mock statistics updated: [cartridge-type] %s [factor] %s [value] %d",
                         statisticsPattern.getCartridgeType(), statisticsPattern.getFactor().toString(), nextSample));
             }
+        } catch (Exception e) {
+            log.error("Could not update mock statistics", e);
         } finally {
             MockHealthStatistics.getInstance().releaseWriteLock(statisticsPattern.getCartridgeType());
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/500c4af3/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/publisher/MockHealthStatisticsNotifier.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/publisher/MockHealthStatisticsNotifier.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/publisher/MockHealthStatisticsNotifier.java
index eb61eaa..2fd33c4 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/publisher/MockHealthStatisticsNotifier.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/statistics/publisher/MockHealthStatisticsNotifier.java
@@ -55,7 +55,7 @@ public class MockHealthStatisticsNotifier implements Runnable {
                     double loadAvereage = MockHealthStatistics.getInstance().getStatistics(
                             mockMemberContext.getServiceName(), MockAutoscalingFactor.LoadAverage);
 
-                    if (log.isDebugEnabled()) {
+                     if (log.isDebugEnabled()) {
                         log.debug(String.format("Publishing memory consumption: [member-id] %s [value] %f",
                                 mockMemberContext.getMemberId(), memoryConsumption));
                     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/500c4af3/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 5f7c9ff..820c979 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
@@ -109,8 +109,8 @@ public class CloudControllerServiceComponent {
             }
 
             if(MockIaasConfig.getInstance().isEnabled()) {
-                // Start mock members if present in registry
-                MockIaasService.startMockMembersIfPresentInRegistry();
+                // Start mock members if they were in running state earlier
+                MockIaasService.getInstance().startMockMembers();
             }
 		} catch (Throwable e) {
 			log.error("******* Cloud Controller Service bundle is failed to activate ****", e);