AMC-team created HDFS-17824:
-------------------------------
Summary: DataNode fails to start when
dfs.datanode.directoryscan.threads is 0 or negative
Key: HDFS-17824
URL: https://issues.apache.org/jira/browse/HDFS-17824
Project: Hadoop HDFS
Issue Type: Bug
Components: datanode
Affects Versions: 2.8.5
Reporter: AMC-team
When {{dfs.datanode.directoryscan.threads}} is configured to {{0}} or a
negative value, the DataNode initialization path constructs the directory
scanner with {{{}Executors.newFixedThreadPool(threads){}}}. Because the thread
count is non-positive, the JDK throws
{{{}java.lang.IllegalArgumentException{}}}, and the DataNode fails to start.
The code currently does not validate this configuration before creating the
thread pool.
*Steps to Reproduce*
1. Set the properties above in {{{}hdfs-site.xml{}}}.
2. Start or restart the DataNode.
3. Observe the following stack trace and process exit:
{code:java}
java.lang.IllegalArgumentException
at
java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1314)
at
java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1237)
at java.util.concurrent.Executors.newFixedThreadPool(Executors.java:151)
at
org.apache.hadoop.hdfs.server.datanode.DirectoryScanner.<init>(DirectoryScanner.java:*
)
at
org.apache.hadoop.hdfs.server.datanode.DataNode.initDirectoryScanner(DataNode.java:*
)
at
org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1543)
...
{code}
*Actual Result*
DataNode startup aborts with IllegalArgumentException during DirectoryScanner
initialization; the node never becomes available.
*Expected Result*
Non-positive values of {{dfs.datanode.directoryscan.threads}} are handled
gracefully—either rejected early with a clear configuration error naming the
key and offending value, or automatically clamped to a safe default (≥1) with a
{{{}WARN{}}}, rather than crashing the process.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]