Author: atm Date: Wed Oct 23 15:27:58 2013 New Revision: 1535060 URL: http://svn.apache.org/r1535060 Log: HDFS-5403. WebHdfs client cannot communicate with older WebHdfs servers post HDFS-5306. Contributed by Aaron T. Myers.
Modified: hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestJsonUtil.java Modified: hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1535060&r1=1535059&r2=1535060&view=diff ============================================================================== --- hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Wed Oct 23 15:27:58 2013 @@ -54,6 +54,9 @@ Release 2.2.1 - UNRELEASED HDFS-5347. Add HDFS NFS user guide. (brandonli) + HDFS-5403. WebHdfs client cannot communicate with older WebHdfs servers + post HDFS-5306. (atm) + Release 2.2.0 - 2013-10-13 INCOMPATIBLE CHANGES Modified: hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java?rev=1535060&r1=1535059&r2=1535060&view=diff ============================================================================== --- hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java (original) +++ hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java Wed Oct 23 15:27:58 2013 @@ -297,10 +297,15 @@ public class JsonUtil { } /** Convert a Json map to an DatanodeInfo object. */ - private static DatanodeInfo toDatanodeInfo(final Map<?, ?> m) { + static DatanodeInfo toDatanodeInfo(final Map<?, ?> m) { if (m == null) { return null; } + + Object infoSecurePort = m.get("infoSecurePort"); + if (infoSecurePort == null) { + infoSecurePort = 0l; // same as the default value in hdfs.proto + } return new DatanodeInfo( (String)m.get("ipAddr"), @@ -308,7 +313,7 @@ public class JsonUtil { (String)m.get("storageID"), (int)(long)(Long)m.get("xferPort"), (int)(long)(Long)m.get("infoPort"), - (int)(long)(Long)m.get("infoSecurePort"), + (int)(long)(Long)infoSecurePort, (int)(long)(Long)m.get("ipcPort"), (Long)m.get("capacity"), Modified: hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestJsonUtil.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestJsonUtil.java?rev=1535060&r1=1535059&r2=1535060&view=diff ============================================================================== --- hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestJsonUtil.java (original) +++ hadoop/common/branches/branch-2.2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestJsonUtil.java Wed Oct 23 15:27:58 2013 @@ -17,6 +17,7 @@ */ package org.apache.hadoop.hdfs.web; +import java.util.HashMap; import java.util.Map; import org.apache.hadoop.fs.FileStatus; @@ -58,4 +59,27 @@ public class TestJsonUtil { System.out.println("fs2 = " + fs2); Assert.assertEquals(fstatus, fs2); } + + @Test + public void testToDatanodeInfoWithoutSecurePort() { + Map<String, Object> response = new HashMap<String, Object>(); + + response.put("ipAddr", "127.0.0.1"); + response.put("hostName", "localhost"); + response.put("storageID", "fake-id"); + response.put("xferPort", 1337l); + response.put("infoPort", 1338l); + // deliberately don't include an entry for "infoSecurePort" + response.put("ipcPort", 1339l); + response.put("capacity", 1024l); + response.put("dfsUsed", 512l); + response.put("remaining", 512l); + response.put("blockPoolUsed", 512l); + response.put("lastUpdate", 0l); + response.put("xceiverCount", 4096l); + response.put("networkLocation", "foo.bar.baz"); + response.put("adminState", "NORMAL"); + + JsonUtil.toDatanodeInfo(response); + } }