Parcourir la source

HDFS-11502. Datanode UI should display hostname based on JMX bean instead of window.location.hostname. Contributed by Jeffrey E Rodriguez and Yuanbo Liu.

(cherry picked from commit e15e2713e1e344b14d63726639d1c83451921515)
Xiaoyu Yao il y a 8 ans
Parent
commit
af8a227a68

+ 8 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java

@@ -2994,6 +2994,14 @@ public class DataNode extends ReconfigurableBase
     return JSON.toString(info);
     return JSON.toString(info);
   }
   }
 
 
+ /**
+   * Return hostname of the datanode.
+   */
+  @Override // DataNodeMXBean
+  public String getDatanodeHostname() {
+    return this.hostName;
+  }
+
   /**
   /**
    * Returned information is a JSON representation of an array,
    * Returned information is a JSON representation of an array,
    * each element of the array is a map contains the information
    * each element of the array is a map contains the information

+ 7 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNodeMXBean.java

@@ -67,6 +67,13 @@ public interface DataNodeMXBean {
    */
    */
   public String getNamenodeAddresses();
   public String getNamenodeAddresses();
 
 
+  /**
+   * Gets the datanode hostname.
+   *
+   * @return the datanode hostname for the datanode.
+   */
+  public String getDatanodeHostname();
+
   /**
   /**
    * Gets information of the block pool service actors.
    * Gets information of the block pool service actors.
    *
    *

+ 1 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/datanode/dn.js

@@ -25,7 +25,7 @@
   function load() {
   function load() {
     $.get('/jmx?qry=Hadoop:service=DataNode,name=DataNodeInfo', function(resp) {
     $.get('/jmx?qry=Hadoop:service=DataNode,name=DataNodeInfo', function(resp) {
       data.dn = workaround(resp.beans[0]);
       data.dn = workaround(resp.beans[0]);
-      data.dn.HostName=window.location.hostname;
+      data.dn.HostName = resp.beans[0]['DatanodeHostname'];
       render();
       render();
     }).fail(show_err_msg);
     }).fail(show_err_msg);
   }
   }

+ 4 - 0
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestDataNodeMXBean.java

@@ -82,6 +82,10 @@ public class TestDataNodeMXBean {
       String namenodeAddresses = (String)mbs.getAttribute(mxbeanName, 
       String namenodeAddresses = (String)mbs.getAttribute(mxbeanName, 
           "NamenodeAddresses");
           "NamenodeAddresses");
       Assert.assertEquals(datanode.getNamenodeAddresses(),namenodeAddresses);
       Assert.assertEquals(datanode.getNamenodeAddresses(),namenodeAddresses);
+      // get attribute "getDatanodeHostname"
+      String datanodeHostname = (String)mbs.getAttribute(mxbeanName,
+          "DatanodeHostname");
+      Assert.assertEquals(datanode.getDatanodeHostname(),datanodeHostname);
       // get attribute "getVolumeInfo"
       // get attribute "getVolumeInfo"
       String volumeInfo = (String)mbs.getAttribute(mxbeanName, "VolumeInfo");
       String volumeInfo = (String)mbs.getAttribute(mxbeanName, "VolumeInfo");
       Assert.assertEquals(replaceDigits(datanode.getVolumeInfo()),
       Assert.assertEquals(replaceDigits(datanode.getVolumeInfo()),