[ https://issues.apache.org/jira/browse/HDFS-14469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16834358#comment-16834358 ]
eBugs commented on HDFS-14469: ------------------------------ After looking at the related code, we have found the following call stack: {noformat} BPServiceActor.run() -> BPServiceActor.connectToNNAndHandshake() -> BPOfferService.verifyAndSetNamespaceInfo() -> DataNode.initBlockPool() -> DataNode.initStorage() -> FsDatasetFactory.newInstance() -> FsDatasetImpl(){noformat} If this call stack is valid, then IMHO we may have a minor issue: Since {{BPServiceActor.run()}} retries all {{IOException}} from {{BPServiceActor.connectToNNAndHandshake()}}, the {{DiskErrorException}} thrown by {{FsDatasetImpl()}} will also be retried. However, since the exception is thrown because of user's incorrect configuration, retrying here will not help. > FsDatasetImpl() throws a DiskErrorException when the configuration has wrong > values > ----------------------------------------------------------------------------------- > > Key: HDFS-14469 > URL: https://issues.apache.org/jira/browse/HDFS-14469 > Project: Hadoop HDFS > Issue Type: Bug > Reporter: eBugs > Priority: Minor > > Dear HDFS developers, we are developing a tool to detect exception-related > bugs in Java. Our prototype has spotted the following {{throw}} statement > whose exception class and error message indicate different error conditions. > > Version: Hadoop-3.1.2 > File: > HADOOP-ROOT/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java > Line: 294-297 > {code:java} > throw new DiskErrorException("Invalid value configured for " > + "dfs.datanode.failed.volumes.tolerated - " + volFailuresTolerated > + ". Value configured is either less than maxVolumeFailureLimit or > greater than " > + "to the number of configured volumes (" + volsConfigured + ").");{code} > > A {{DiskErrorException}} means an error has occurred when the process is > interacting with the disk, e.g., in > {{org.apache.hadoop.util.DiskChecker.checkDirInternal()}} we have the > following code (lines 97-98): > {code:java} > throw new DiskErrorException("Cannot create directory: " + > dir.toString());{code} > However, the error message of the first exception indicates that > {{dfs.datanode.failed.volumes.tolerated}} is configured incorrectly, which > means there is nothing wrong with the disk (yet). This mismatch could be a > problem. For example, the callers trying to handle other > {{DiskErrorException}} may accidentally (and incorrectly) handle the > configuration error. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org