Jelajahi Sumber

HDFS-1584. Check TGT and renew if needed when fetching delegation tokens using HFTP. Contributed by Kan Zhang and Benoy Antony.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.22@1346239 13f79535-47bb-0310-9956-ffa450edef68
Konstantin Shvachko 13 tahun lalu
induk
melakukan
e68c400981

+ 3 - 0
hdfs/CHANGES.txt

@@ -46,6 +46,9 @@ Release 0.22.1 - Unreleased
     pass exception information back to the caller.
     pass exception information back to the caller.
     (Boris Shkolnik and Benoy Antony via shv)
     (Boris Shkolnik and Benoy Antony via shv)
 
 
+    HDFS-1584. Check TGT and renew if needed when fetching delegation tokens
+    using HFTP. (Kan Zhang and Benoy Antony via shv)
+
 Release 0.22.0 - 2011-11-29
 Release 0.22.0 - 2011-11-29
 
 
   INCOMPATIBLE CHANGES
   INCOMPATIBLE CHANGES

+ 3 - 4
hdfs/src/java/org/apache/hadoop/hdfs/HftpFileSystem.java

@@ -188,9 +188,6 @@ public class HftpFileSystem extends FileSystem {
         }
         }
       }
       }
       
       
-      //Renew TGT if needed
-      ugi.reloginFromKeytab();
-      
       //since we don't already have a token, go get one over https
       //since we don't already have a token, go get one over https
       if (delegationToken == null) {
       if (delegationToken == null) {
         delegationToken = 
         delegationToken = 
@@ -202,8 +199,10 @@ public class HftpFileSystem extends FileSystem {
   
   
 
 
   @Override
   @Override
-  public Token<?> getDelegationToken(final String renewer) throws IOException {
+  public synchronized Token<?> getDelegationToken(final String renewer) throws IOException {
     try {
     try {
+      //Renew TGT if needed
+      ugi.reloginFromKeytab();
       return ugi.doAs(new PrivilegedExceptionAction<Token<?>>() {
       return ugi.doAs(new PrivilegedExceptionAction<Token<?>>() {
         public Token<?> run() throws IOException {
         public Token<?> run() throws IOException {
           Credentials c;
           Credentials c;