Browse Source

Federation: Failure in browsing data on new namenodes.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/hdfs/branches/HDFS-1052@1076482 13f79535-47bb-0310-9956-ffa450edef68
Jitendra Nath Pandey 14 years ago
parent
commit
a893ca8b33

+ 2 - 0
CHANGES.txt

@@ -162,6 +162,8 @@ Trunk (unreleased changes)
     HDFS-1628. Display full path in AccessControlException.  (John George
     via szetszwo)
 
+    HDFS-1707. Federation: Failure in browsing data on new namenodes. (jitendra)
+
   OPTIMIZATIONS
 
   BUG FIXES

+ 9 - 1
src/java/org/apache/hadoop/hdfs/server/common/JspHelper.java

@@ -43,6 +43,7 @@ import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.BlockReader;
+import org.apache.hadoop.hdfs.DFSUtil;
 import org.apache.hadoop.hdfs.protocol.DatanodeInfo;
 import org.apache.hadoop.hdfs.protocol.ExtendedBlock;
 import org.apache.hadoop.hdfs.protocol.LocatedBlock;
@@ -480,7 +481,14 @@ public class JspHelper {
         Token<DelegationTokenIdentifier> token = 
           new Token<DelegationTokenIdentifier>();
         token.decodeFromUrlString(tokenString);
-        InetSocketAddress serviceAddr = NameNode.getAddress(conf);
+        String namenodeAddress = (String) request
+            .getParameter(NAMENODE_ADDRESS);
+        if (namenodeAddress == null) {
+          throw new IOException("Url parameter '" + NAMENODE_ADDRESS
+              + "' not found.");
+        }
+        InetSocketAddress serviceAddr = DFSUtil
+            .getSocketAddress(namenodeAddress);
         LOG.info("Setting service in token: "
             + new Text(serviceAddr.getAddress().getHostAddress() + ":"
                 + serviceAddr.getPort()));

+ 4 - 5
src/test/hdfs/org/apache/hadoop/hdfs/server/common/TestJspHelper.java

@@ -78,17 +78,16 @@ public class TestJspHelper {
         tokenString);
     when(request.getRemoteUser()).thenReturn(user);
 
+    when(request.getParameter(JspHelper.NAMENODE_ADDRESS)).thenReturn(
+        "1.1.1.1:1111");
+
     conf.set(DFSConfigKeys.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
     UserGroupInformation.setConfiguration(conf);
 
-    InetSocketAddress serviceAddr = NameNode.getAddress(conf);
-    Text tokenService = new Text(serviceAddr.getAddress().getHostAddress()
-        + ":" + serviceAddr.getPort());
-
     UserGroupInformation ugi = JspHelper.getUGI(request, conf);
     Token<? extends TokenIdentifier> tokenInUgi = ugi.getTokens().iterator()
         .next();
-    Assert.assertEquals(tokenInUgi.getService(), tokenService);
+    Assert.assertEquals(tokenInUgi.getService().toString(), "1.1.1.1:1111");
   }
   
   @Test