HDFS-2976. Remove unnecessary method (tokenRefetchNeeded) in DFSClient.

(Contributed by Uma Maheswara Rao G)


git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1298495 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Uma Maheswara Rao G 2012-03-08 18:31:33 +00:00
parent b874d06133
commit b19d1186ab
2 changed files with 30 additions and 0 deletions

View File

@ -53,6 +53,8 @@ Trunk (unreleased changes)
HDFS-3030. Remove getProtocolVersion and getProtocolSignature from translators.
(jitendra)
HDFS-2976. Remove unnecessary method (tokenRefetchNeeded) in DFSClient.
OPTIMIZATIONS
BUG FIXES

View File

@ -132,6 +132,7 @@ import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.security.token.TokenRenewer;
import org.apache.hadoop.util.DataChecksum;
import org.apache.hadoop.util.Progressable;
import org.apache.hadoop.hdfs.security.token.block.InvalidBlockTokenException;
import com.google.common.base.Preconditions;
@ -670,6 +671,33 @@ public class DFSClient implements java.io.Closeable {
return false;
}
/**
* Should the block access token be refetched on an exception
*
* @param ex Exception received
* @param targetAddr Target datanode address from where exception was received
* @return true if block access token has expired or invalid and it should be
* refetched
*/
private static boolean tokenRefetchNeeded(IOException ex,
InetSocketAddress targetAddr) {
/*
* Get a new access token and retry. Retry is needed in 2 cases. 1) When
* both NN and DN re-started while DFSClient holding a cached access token.
* 2) In the case that NN fails to update its access key at pre-set interval
* (by a wide margin) and subsequently restarts. In this case, DN
* re-registers itself with NN and receives a new access key, but DN will
* delete the old access key from its memory since it's considered expired
* based on the estimated expiration date.
*/
if (ex instanceof InvalidBlockTokenException || ex instanceof InvalidToken) {
LOG.info("Access token was invalid when connecting to " + targetAddr
+ " : " + ex);
return true;
}
return false;
}
/**
* Cancel a delegation token
* @param token the token to cancel