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