HADOOP-12348. MetricsSystemImpl creates MetricsSourceAdapter with wrong time unit parameter. (zxu via rkanter)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9538af0e Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9538af0e Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9538af0e Branch: refs/heads/YARN-1197 Commit: 9538af0e1a7428b8787afa8d5e0b82c1e04adca7 Parents: fba06a7 Author: Robert Kanter <[email protected]> Authored: Fri Sep 11 15:20:17 2015 -0700 Committer: Robert Kanter <[email protected]> Committed: Fri Sep 11 15:20:17 2015 -0700 ---------------------------------------------------------------------- hadoop-common-project/hadoop-common/CHANGES.txt | 3 +++ .../hadoop/metrics2/impl/MetricsSourceAdapter.java | 12 ++++++++---- .../apache/hadoop/metrics2/impl/MetricsSystemImpl.java | 6 +++--- .../hadoop/metrics2/impl/TestMetricsSystemImpl.java | 13 +++++++++++++ 4 files changed, 27 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/9538af0e/hadoop-common-project/hadoop-common/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 6ea2484..37c1cc8 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -1091,6 +1091,9 @@ Release 2.8.0 - UNRELEASED HADOOP-12388. Fix components' version information in the web page 'About the Cluster'. (Jun Gong via zxu) + HADOOP-12348. MetricsSystemImpl creates MetricsSourceAdapter with + wrong time unit parameter. (zxu via rkanter) + Release 2.7.2 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/9538af0e/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSourceAdapter.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSourceAdapter.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSourceAdapter.java index f3ddc91..ace874e 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSourceAdapter.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSourceAdapter.java @@ -61,7 +61,7 @@ class MetricsSourceAdapter implements DynamicMBean { private Iterable<MetricsRecordImpl> lastRecs; private long jmxCacheTS = 0; - private int jmxCacheTTL; + private long jmxCacheTTL; private MBeanInfo infoCache; private ObjectName mbeanName; private final boolean startMBeans; @@ -69,7 +69,7 @@ class MetricsSourceAdapter implements DynamicMBean { MetricsSourceAdapter(String prefix, String name, String description, MetricsSource source, Iterable<MetricsTag> injectedTags, MetricsFilter recordFilter, MetricsFilter metricFilter, - int jmxCacheTTL, boolean startMBeans) { + long jmxCacheTTL, boolean startMBeans) { this.prefix = checkNotNull(prefix, "prefix"); this.name = checkNotNull(name, "name"); this.source = checkNotNull(source, "source"); @@ -84,7 +84,7 @@ class MetricsSourceAdapter implements DynamicMBean { MetricsSourceAdapter(String prefix, String name, String description, MetricsSource source, Iterable<MetricsTag> injectedTags, - int period, MetricsConfig conf) { + long period, MetricsConfig conf) { this(prefix, name, description, source, injectedTags, conf.getFilter(RECORD_FILTER_KEY), conf.getFilter(METRIC_FILTER_KEY), @@ -229,7 +229,11 @@ class MetricsSourceAdapter implements DynamicMBean { return mbeanName; } - + @VisibleForTesting + long getJmxCacheTTL() { + return jmxCacheTTL; + } + private void updateInfoCache() { LOG.debug("Updating info cache..."); infoCache = infoBuilder.reset(lastRecs).get(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/9538af0e/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java index a1d258d..15914d6 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java @@ -262,7 +262,7 @@ public class MetricsSystemImpl extends MetricsSystem implements MetricsSource { checkNotNull(config, "config"); MetricsConfig conf = sourceConfigs.get(name); MetricsSourceAdapter sa = new MetricsSourceAdapter(prefix, name, desc, - source, injectedTags, period, conf != null ? conf + source, injectedTags, period * 1000L, conf != null ? conf : config.subset(SOURCE_KEY)); sources.put(name, sa); sa.start(); @@ -359,7 +359,7 @@ public class MetricsSystemImpl extends MetricsSystem implements MetricsSource { return; } logicalTime = 0; - long millis = period * 1000; + long millis = period * 1000L; timer = new Timer("Timer for '"+ prefix +"' metrics system", true); timer.scheduleAtFixedRate(new TimerTask() { @Override @@ -550,7 +550,7 @@ public class MetricsSystemImpl extends MetricsSystem implements MetricsSource { private void registerSystemSource() { MetricsConfig sysConf = sourceConfigs.get(MS_NAME); sysSource = new MetricsSourceAdapter(prefix, MS_STATS_NAME, MS_STATS_DESC, - MetricsAnnotations.makeSource(this), injectedTags, period, + MetricsAnnotations.makeSource(this), injectedTags, period * 1000L, sysConf == null ? config.subset(SOURCE_KEY) : sysConf); sysSource.start(); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/9538af0e/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSystemImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSystemImpl.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSystemImpl.java index 6238d79..ecf2cc8 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSystemImpl.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSystemImpl.java @@ -544,6 +544,19 @@ public class TestMetricsSystemImpl { } } + @Test + public void testRegisterSourceJmxCacheTTL() { + MetricsSystem ms = new MetricsSystemImpl(); + ms.init("TestMetricsSystem"); + TestSource ts = new TestSource("ts"); + ms.register(ts); + MetricsSourceAdapter sa = ((MetricsSystemImpl) ms) + .getSourceAdapter("TestSource"); + assertEquals(MetricsConfig.PERIOD_DEFAULT * 1000 + 1, + sa.getJmxCacheTTL()); + ms.shutdown(); + } + @Metrics(context="test") private static class TestSource { @Metric("C1 desc") MutableCounterLong c1;
