浏览代码

HDFS-3099. SecondaryNameNode does not properly initialize metrics system. Contributed by Aaron T. Myers.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1301230 13f79535-47bb-0310-9956-ffa450edef68
Aaron Myers 13 年之前
父节点
当前提交
003ea1e226

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

@@ -210,6 +210,9 @@ Release 0.23.3 - UNRELEASED
 
     HDFS-3005. FSVolume.decDfsUsed(..) should be synchronized.  (szetszwo)
 
+    HDFS-3099. SecondaryNameNode does not properly initialize metrics system.
+    (atm)
+
   BREAKDOWN OF HDFS-1623 SUBTASKS
 
     HDFS-2179. Add fencing framework and mechanisms for NameNode HA. (todd)

+ 1 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java

@@ -204,6 +204,7 @@ public class SecondaryNameNode implements Runnable {
           DFS_SECONDARY_NAMENODE_USER_NAME_KEY, infoBindAddress);
     }
     // initiate Java VM metrics
+    DefaultMetricsSystem.initialize("SecondaryNameNode");
     JvmMetrics.create("SecondaryNameNode",
         conf.get(DFS_METRICS_SESSION_ID_KEY), DefaultMetricsSystem.instance());
     

+ 40 - 23
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestSecondaryWebUi.java

@@ -17,42 +17,59 @@
  */
 package org.apache.hadoop.hdfs.server.namenode;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
+import java.net.MalformedURLException;
 import java.net.URL;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hdfs.DFSConfigKeys;
 import org.apache.hadoop.hdfs.DFSTestUtil;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 public class TestSecondaryWebUi {
-
-  @Test
-  public void testSecondaryWebUi() throws IOException {
-    Configuration conf = new Configuration();
+  
+  private static MiniDFSCluster cluster;
+  private static SecondaryNameNode snn;
+  private static Configuration conf = new Configuration();
+  
+  @BeforeClass
+  public static void setUpCluster() throws IOException {
     conf.set(DFSConfigKeys.DFS_NAMENODE_SECONDARY_HTTP_ADDRESS_KEY,
         "0.0.0.0:0");
-    MiniDFSCluster cluster = null;
-    SecondaryNameNode snn = null;
-    try {
-      cluster = new MiniDFSCluster.Builder(conf).numDataNodes(0)
-          .build();
-      cluster.waitActive();
-      
-      snn = new SecondaryNameNode(conf);
-      String pageContents = DFSTestUtil.urlGet(new URL("http://localhost:" +
-          SecondaryNameNode.getHttpAddress(conf).getPort() + "/status.jsp"));
-      assertTrue(pageContents.contains("Last Checkpoint Time"));
-    } finally {
-      if (cluster != null) {
-        cluster.shutdown();
-      }
-      if (snn != null) {
-        snn.shutdown();
-      }
+    cluster = new MiniDFSCluster.Builder(conf).numDataNodes(0)
+        .build();
+    cluster.waitActive();
+    
+    snn = new SecondaryNameNode(conf);
+  }
+  
+  @AfterClass
+  public static void shutDownCluster() {
+    if (cluster != null) {
+      cluster.shutdown();
+    }
+    if (snn != null) {
+      snn.shutdown();
     }
   }
+
+  @Test
+  public void testSecondaryWebUi() throws IOException {
+    String pageContents = DFSTestUtil.urlGet(new URL("http://localhost:" +
+        SecondaryNameNode.getHttpAddress(conf).getPort() + "/status.jsp"));
+    assertTrue(pageContents.contains("Last Checkpoint Time"));
+  }
+  
+  @Test
+  public void testSecondaryWebJmx() throws MalformedURLException, IOException {
+    String pageContents = DFSTestUtil.urlGet(new URL("http://localhost:" +
+        SecondaryNameNode.getHttpAddress(conf).getPort() + "/jmx"));
+    assertTrue(pageContents.contains(
+        "Hadoop:service=SecondaryNameNode,name=JvmMetrics"));
+  }
 }