Browse Source

Revert "HBASE-11301 [optionally] update jmx cache to drop old metrics (Maysam Yabandeh via stack)"

This reverts commit fd6a801ddb2d2db83f98e7aab183a6e07ce4890c.

Refers to an HBASE rather than HADOOP issue.
stack 10 năm trước cách đây
mục cha
commit
76245dfccd

+ 0 - 3
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -41,9 +41,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.

+ 3 - 2
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();

+ 0 - 51
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