[ https://issues.apache.org/jira/browse/HDFS-10760?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15449340#comment-15449340 ]
Wei-Chiu Chuang commented on HDFS-10760: ---------------------------------------- [~panyuxuan] thanks for reporting the issue and creating the patch. In fact, DataXceiver#checkAccess() is used by multiple methods and I think it would be beneficial if you can also fix other as well. For example, I can see DataXceiver#writeBlock calls checkAccess, and if an InvalidTokenException is thrown, it also logs a message at error level. {code} try { ... } catch (IOException ioe) { if (isClient) { LOG.error(datanode + ":Exception transfering block " + block + " to mirror " + mirrorNode + ": " + e); throw e; } } {code} > DataXceiver#run() should not log InvalidToken exception as an error > ------------------------------------------------------------------- > > Key: HDFS-10760 > URL: https://issues.apache.org/jira/browse/HDFS-10760 > Project: Hadoop HDFS > Issue Type: Bug > Affects Versions: 2.7.2 > Reporter: Pan Yuxuan > Assignee: Pan Yuxuan > Attachments: HADOOP-13492.patch, HDFS-10760-1.patch > > > DataXceiver#run() just log InvalidToken exception as an error. > When client has an expired token and just refetch a new token, the DN log > will has an error like below: > {noformat} > 2016-08-11 02:41:09,817 ERROR datanode.DataNode (DataXceiver.java:run(269)) - > XXXXXXX:50010:DataXceiver error processing READ_BLOCK operation src: > /10.17.1.5:38844 dst: /10.17.1.5:50010 > org.apache.hadoop.security.token.SecretManager$InvalidToken: Block token with > block_token_identifier (expiryDate=1470850746803, keyId=-2093956963, > userId=hbase, blockPoolId=BP-641703426-10.17.1.2-1468517918886, > blockId=1077120201, access modes=[READ]) is expired. > at > org.apache.hadoop.hdfs.security.token.block.BlockTokenSecretManager.checkAccess(BlockTokenSecretManager.java:280) > at > org.apache.hadoop.hdfs.security.token.block.BlockTokenSecretManager.checkAccess(BlockTokenSecretManager.java:301) > at > org.apache.hadoop.hdfs.security.token.block.BlockPoolTokenSecretManager.checkAccess(BlockPoolTokenSecretManager.java:97) > at > org.apache.hadoop.hdfs.server.datanode.DataXceiver.checkAccess(DataXceiver.java:1236) > at > org.apache.hadoop.hdfs.server.datanode.DataXceiver.readBlock(DataXceiver.java:481) > at > org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.opReadBlock(Receiver.java:116) > at > org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.processOp(Receiver.java:71) > at > org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:242) > at java.lang.Thread.run(Thread.java:745) > {noformat} > This is not a server error and the DataXceiver#checkAccess() has already > loged the InvalidToken as a warning. > A simple fix by catching the InvalidToken exception in DataXceiver#run(), > only keeping the warning logged by DataXceiver#checkAccess() in the DN log. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org