[ https://issues.apache.org/jira/browse/HDFS-7439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14335088#comment-14335088 ]
Tsz Wo Nicholas Sze commented on HDFS-7439: ------------------------------------------- There are other places having similar problem: - DFSOutputStream.DataStreamer.createBlockOutputStream(..) - DFSOutputStream.DataStreamer.transfer(..) - RemoteBlockReader2.checkSuccess(..) - Dispatcher.PendingMove.receiveResponse(..) - DataXceiver.replaceBlock(..) The code has similar format {code} if (status != SUCCESS) { if (status == Status.ERROR_ACCESS_TOKEN) { throw new InvalidBlockTokenException(..); } else { throw new IOException(..); } } {code} How about we add a utility method? > Add BlockOpResponseProto's message to DFSClient's exception message > ------------------------------------------------------------------- > > Key: HDFS-7439 > URL: https://issues.apache.org/jira/browse/HDFS-7439 > Project: Hadoop HDFS > Issue Type: Improvement > Reporter: Ming Ma > Assignee: Takanobu Asanuma > Priority: Minor > Attachments: HDFS-7439.1.patch > > > When (BlockOpResponseProto#getStatus() != SUCCESS), it helps with debugging > if DFSClient can add BlockOpResponseProto's message to the exception message > applications will get. For example, instead of > {noformat} > throw new IOException("Got error for OP_READ_BLOCK, self=" > + peer.getLocalAddressString() + ", remote=" > + peer.getRemoteAddressString() + ", for file " + file > + ", for pool " + block.getBlockPoolId() + " block " > + block.getBlockId() + "_" + block.getGenerationStamp()); > {noformat} > It could be, > {noformat} > throw new IOException("Got error for OP_READ_BLOCK, self=" > + peer.getLocalAddressString() + ", remote=" > + peer.getRemoteAddressString() + ", for file " + file > + ", for pool " + block.getBlockPoolId() + " block " > + block.getBlockId() + "_" + block.getGenerationStamp() > + ", status message " + status.getMessage()); > {noformat} > We might want to check out all the references to BlockOpResponseProto in > DFSClient. -- This message was sent by Atlassian JIRA (v6.3.4#6332)