Revert "HBASE-11301 [optionally] update jmx cache to drop old metrics (Maysam Yabandeh via stack) -- REAPPLY"
This reverts commit 74f4d8590de85eaa92c711010bbc0ff0e33ee2e8. Refers to the wrong issue (HBASE rather than HADOOP) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/692d3b83 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/692d3b83 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/692d3b83 Branch: refs/heads/HDFS-EC Commit: 692d3b83e4a2d0dfaf5c77acccc6a7a6dd4e272e Parents: 74f4d85 Author: stack <st...@duboce.net> Authored: Mon Dec 1 23:04:00 2014 -0800 Committer: stack <st...@duboce.net> Committed: Mon Dec 1 23:04:00 2014 -0800 ---------------------------------------------------------------------- hadoop-common-project/hadoop-common/CHANGES.txt | 3 -- .../metrics2/impl/MetricsSourceAdapter.java | 5 +- .../metrics2/impl/TestMetricsSourceAdapter.java | 51 -------------------- 3 files changed, 3 insertions(+), 56 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/692d3b83/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 5e4caa0..b90573e 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -404,9 +404,6 @@ Release 2.7.0 - UNRELEASED HADOOP-11341. KMS support for whitelist key ACLs. (Arun Suresh via wang) - HADOOP-11301. [optionally] update jmx cache to drop old metrics - (Maysam Yabandeh via stack) - OPTIMIZATIONS HADOOP-11323. WritableComparator#compare keeps reference to byte array. http://git-wip-us.apache.org/repos/asf/hadoop/blob/692d3b83/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 cae9c3d..cf11e6d 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 @@ -173,8 +173,9 @@ class MetricsSourceAdapter implements DynamicMBean { } synchronized(this) { - updateAttrCache(); - if (getAllMetrics) { + int oldCacheSize = attrCache.size(); + int newCacheSize = updateAttrCache(); + if (oldCacheSize < newCacheSize) { updateInfoCache(); } jmxCacheTS = Time.now(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/692d3b83/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSourceAdapter.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSourceAdapter.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSourceAdapter.java index 22b594a..724d449 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSourceAdapter.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSourceAdapter.java @@ -23,8 +23,6 @@ import static org.junit.Assert.*; import java.util.ArrayList; import java.util.List; -import org.apache.hadoop.metrics2.MetricsCollector; -import org.apache.hadoop.metrics2.MetricsRecordBuilder; import org.apache.hadoop.metrics2.MetricsSource; import org.apache.hadoop.metrics2.MetricsTag; import org.apache.hadoop.metrics2.annotation.Metric; @@ -33,59 +31,10 @@ import org.apache.hadoop.metrics2.lib.MetricsAnnotations; import org.apache.hadoop.metrics2.lib.MetricsRegistry; import org.apache.hadoop.metrics2.lib.MetricsSourceBuilder; import org.apache.hadoop.metrics2.lib.MutableCounterLong; -import static org.apache.hadoop.metrics2.lib.Interns.info; -import static org.junit.Assert.assertEquals; - import org.junit.Test; -import javax.management.MBeanAttributeInfo; -import javax.management.MBeanInfo; - public class TestMetricsSourceAdapter { - - @Test - public void testPurgeOldMetrics() throws Exception { - // create test source with a single metric counter of value 1 - PurgableSource source = new PurgableSource(); - MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); - final MetricsSource s = sb.build(); - - List<MetricsTag> injectedTags = new ArrayList<MetricsTag>(); - MetricsSourceAdapter sa = new MetricsSourceAdapter( - "tst", "tst", "testdesc", s, injectedTags, null, null, 1, false); - - MBeanInfo info = sa.getMBeanInfo(); - boolean sawIt = false; - for (MBeanAttributeInfo mBeanAttributeInfo : info.getAttributes()) { - sawIt |= mBeanAttributeInfo.getName().equals(source.lastKeyName); - }; - assertTrue("The last generated metric is not exported to jmx", sawIt); - - Thread.sleep(1000); // skip JMX cache TTL - - info = sa.getMBeanInfo(); - sawIt = false; - for (MBeanAttributeInfo mBeanAttributeInfo : info.getAttributes()) { - sawIt |= mBeanAttributeInfo.getName().equals(source.lastKeyName); - }; - assertTrue("The last generated metric is not exported to jmx", sawIt); - } - - //generate a new key per each call - class PurgableSource implements MetricsSource { - int nextKey = 0; - String lastKeyName = null; - @Override - public void getMetrics(MetricsCollector collector, boolean all) { - MetricsRecordBuilder rb = - collector.addRecord("purgablesource") - .setContext("test"); - lastKeyName = "key" + nextKey++; - rb.addGauge(info(lastKeyName, "desc"), 1); - } - } - @Test public void testGetMetricsAndJmx() throws Exception { // create test source with a single metric counter of value 0