From d511d704d2c71063129b625ec832faa0c0c43c79 Mon Sep 17 00:00:00 2001 From: Jitendra Nath Pandey Date: Sat, 4 Feb 2012 07:02:30 +0000 Subject: [PATCH] Merged r1240460 from trunk for HDFS-2785. git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1240461 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../hadoop/hdfs/web/WebHdfsFileSystem.java | 19 +++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index d85e9d23636..7ba0131955f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -104,6 +104,9 @@ Release 0.23.1 - UNRELEASED HDFS-2784. Update hftp and hdfs for host-based token support. (Kihwal Lee via jitendra) + HDFS-2785. Update webhdfs and httpfs for host-based token support. + (Robert Joseph Evans via jitendra) + OPTIMIZATIONS HDFS-2130. Switch default checksum to CRC32C. (todd) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java index 3a802065167..c64dfb14e8a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java @@ -141,6 +141,7 @@ public class WebHdfsFileSystem extends FileSystem private final UserGroupInformation ugi; private InetSocketAddress nnAddr; + private URI uri; private Token delegationToken; private final AuthenticatedURL.Token authToken = new AuthenticatedURL.Token(); private Path workingDir; @@ -158,7 +159,11 @@ public class WebHdfsFileSystem extends FileSystem ) throws IOException { super.initialize(uri, conf); setConf(conf); - + try { + this.uri = new URI(uri.getScheme(), uri.getAuthority(), null, null, null); + } catch (URISyntaxException e) { + throw new IllegalArgumentException(e); + } this.nnAddr = NetUtils.createSocketAddr(uri.toString()); this.workingDir = getHomeDirectory(); @@ -203,12 +208,7 @@ public class WebHdfsFileSystem extends FileSystem @Override public URI getUri() { - try { - return new URI(SCHEME, null, nnAddr.getHostName(), nnAddr.getPort(), - null, null, null); - } catch (URISyntaxException e) { - return null; - } + return this.uri; } /** @return the home directory. */ @@ -810,8 +810,7 @@ public class WebHdfsFileSystem extends FileSystem final Token token, final Configuration conf ) throws IOException, InterruptedException, URISyntaxException { - final InetSocketAddress nnAddr = NetUtils.createSocketAddr( - token.getService().toString()); + final InetSocketAddress nnAddr = SecurityUtil.getTokenServiceAddr(token); final URI uri = DFSUtil.createUri(WebHdfsFileSystem.SCHEME, nnAddr); return (WebHdfsFileSystem)FileSystem.get(uri, conf); } @@ -821,7 +820,7 @@ public class WebHdfsFileSystem extends FileSystem ) throws IOException, InterruptedException { final UserGroupInformation ugi = UserGroupInformation.getLoginUser(); // update the kerberos credentials, if they are coming from a keytab - ugi.checkTGTAndReloginFromKeytab(); + ugi.reloginFromKeytab(); try { WebHdfsFileSystem webhdfs = getWebHdfs(token, conf);