From b1a9ec856b572894e769f052aea2340fc3f23c78 Mon Sep 17 00:00:00 2001 From: Akira Ajisaka Date: Wed, 18 Jan 2017 17:53:21 +0900 Subject: [PATCH] HDFS-11290. TestFSNameSystemMBean should wait until JMX cache is cleared. Contributed by Erik Krogen. --- .../hdfs/server/namenode/TestFSNamesystemMBean.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java index d3114943a5..5a7da05721 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java @@ -34,6 +34,8 @@ import org.apache.hadoop.fs.Path; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hdfs.MiniDFSCluster; +import org.apache.hadoop.metrics2.impl.ConfigBuilder; +import org.apache.hadoop.metrics2.impl.TestMetricsConfig; import org.junit.Test; import org.eclipse.jetty.util.ajax.JSON; @@ -139,12 +141,16 @@ public void testWithFSNamesystemWriteLock() throws Exception { MiniDFSCluster cluster = null; FSNamesystem fsn = null; + int jmxCachePeriod = 1; + new ConfigBuilder().add("namenode.period", jmxCachePeriod) + .save(TestMetricsConfig.getTestFilename("hadoop-metrics2-namenode")); try { cluster = new MiniDFSCluster.Builder(conf).build(); cluster.waitActive(); fsn = cluster.getNameNode().namesystem; fsn.writeLock(); + Thread.sleep(jmxCachePeriod * 1000); MBeanClient client = new MBeanClient(); client.start(); @@ -167,11 +173,15 @@ public void testWithFSNamesystemWriteLock() throws Exception { @Test public void testWithFSEditLogLock() throws Exception { Configuration conf = new Configuration(); + int jmxCachePeriod = 1; + new ConfigBuilder().add("namenode.period", jmxCachePeriod) + .save(TestMetricsConfig.getTestFilename("hadoop-metrics2-namenode")); MiniDFSCluster cluster = null; try { cluster = new MiniDFSCluster.Builder(conf).build(); cluster.waitActive(); synchronized (cluster.getNameNode().getFSImage().getEditLog()) { + Thread.sleep(jmxCachePeriod * 1000); MBeanClient client = new MBeanClient(); client.start(); client.join(20000);