KYLIN-2836 Fix timers counters and meters add synchronization impl

This closes #75

Signed-off-by: Li Yang <liy...@apache.org>


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

Branch: refs/heads/master
Commit: ebc53b6b72dcade8f0c9f88f36f3aa43a43ae8f8
Parents: 25bb46e
Author: mingming.ge <mingming.ge@kyligence>
Authored: Mon Sep 25 17:01:51 2017 +0800
Committer: Li Yang <liy...@apache.org>
Committed: Fri Jan 26 22:54:58 2018 +0800

----------------------------------------------------------------------
 .../metrics/metrics2/CodahaleMetrics.java       | 24 +++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/ebc53b6b/core-common/src/main/java/org/apache/kylin/common/metrics/metrics2/CodahaleMetrics.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/metrics/metrics2/CodahaleMetrics.java
 
b/core-common/src/main/java/org/apache/kylin/common/metrics/metrics2/CodahaleMetrics.java
index bae6cfb..e728759 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/metrics/metrics2/CodahaleMetrics.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/metrics/metrics2/CodahaleMetrics.java
@@ -144,9 +144,27 @@ public class CodahaleMetrics implements Metrics {
         for (Map.Entry<String, Metric> metric : 
metricRegistry.getMetrics().entrySet()) {
             metricRegistry.remove(metric.getKey());
         }
-        timers.invalidateAll();
-        counters.invalidateAll();
-        meters.invalidateAll();
+
+        try {
+            timersLock.lock();
+            timers.invalidateAll();
+        } finally {
+            timersLock.unlock();
+        }
+
+        try {
+            countersLock.lock();
+            counters.invalidateAll();
+        } finally {
+            countersLock.unlock();
+        }
+
+        try {
+            metersLock.lock();
+            meters.invalidateAll();
+        } finally {
+            metersLock.unlock();
+        }
     }
 
     @Override

Reply via email to