Andrew Wang created HDFS-5458: --------------------------------- Summary: Datanode failed volume threshold ignored if exception is thrown in getDataDirsFromURIs Key: HDFS-5458 URL: https://issues.apache.org/jira/browse/HDFS-5458 Project: Hadoop HDFS Issue Type: Bug Components: datanode Affects Versions: 3.0.0 Reporter: Andrew Wang Assignee: Andrew Wang
Saw a stacktrace of datanode startup with a bad volume, where even listing directories would throw an IOException. The failed volume threshold was set to 1, but it would fatally error out in {{File#getCanonicalPath}} in {{getDataDirsFromURIs}}: {code} File dir = new File(dirURI.getPath()); try { dataNodeDiskChecker.checkDir(localFS, new Path(dir.toURI())); dirs.add(dir); } catch (IOException ioe) { LOG.warn("Invalid " + DFS_DATANODE_DATA_DIR_KEY + " " + dir + " : ", ioe); invalidDirs.append("\"").append(dir.getCanonicalPath()).append("\" "); } {code} Since {{getCanonicalPath}} can need to do I/O and thus throw an IOException, this catch clause doesn't properly protect startup from a failed volume. -- This message was sent by Atlassian JIRA (v6.1#6144)