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)
This commit is contained in:
stack 2014-12-01 23:04:00 -08:00
parent 74f4d8590d
commit 692d3b83e4
3 changed files with 3 additions and 56 deletions

View File

@ -404,9 +404,6 @@ Release 2.7.0 - UNRELEASED
HADOOP-11341. KMS support for whitelist key ACLs. (Arun Suresh via wang) 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 OPTIMIZATIONS
HADOOP-11323. WritableComparator#compare keeps reference to byte array. HADOOP-11323. WritableComparator#compare keeps reference to byte array.

View File

@ -173,8 +173,9 @@ private void updateJmxCache() {
} }
synchronized(this) { synchronized(this) {
updateAttrCache(); int oldCacheSize = attrCache.size();
if (getAllMetrics) { int newCacheSize = updateAttrCache();
if (oldCacheSize < newCacheSize) {
updateInfoCache(); updateInfoCache();
} }
jmxCacheTS = Time.now(); jmxCacheTS = Time.now();

View File

@ -23,8 +23,6 @@
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; 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.MetricsSource;
import org.apache.hadoop.metrics2.MetricsTag; import org.apache.hadoop.metrics2.MetricsTag;
import org.apache.hadoop.metrics2.annotation.Metric; import org.apache.hadoop.metrics2.annotation.Metric;
@ -33,59 +31,10 @@
import org.apache.hadoop.metrics2.lib.MetricsRegistry; import org.apache.hadoop.metrics2.lib.MetricsRegistry;
import org.apache.hadoop.metrics2.lib.MetricsSourceBuilder; import org.apache.hadoop.metrics2.lib.MetricsSourceBuilder;
import org.apache.hadoop.metrics2.lib.MutableCounterLong; 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 org.junit.Test;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
public class TestMetricsSourceAdapter { 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 @Test
public void testGetMetricsAndJmx() throws Exception { public void testGetMetricsAndJmx() throws Exception {
// create test source with a single metric counter of value 0 // create test source with a single metric counter of value 0