apache/hadoop · error · HadoopIllegalArgumentException
Invalid value configured for dfs.datanode.failed.volumes.tol
Error message
Invalid value configured for dfs.datanode.failed.volumes.tolerated - {}. Value configured is >= to the number of configured volumes ({}). What it means
Error "Invalid value configured for dfs.datanode.failed.volumes.tolerated - {}. Value configured is >= to the number of configured volumes ({})." thrown in apache/hadoop.
Source
Thrown at hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/checker/StorageLocationChecker.java:175
new LinkedHashMap<>();
final Set<StorageLocation> failedLocations = new HashSet<>();
final Map<StorageLocation, ListenableFuture<VolumeCheckResult>> futures =
Maps.newHashMap();
final LocalFileSystem localFS = FileSystem.getLocal(conf);
final CheckContext context = new CheckContext(localFS, expectedPermission);
// Start parallel disk check operations on all StorageLocations.
for (StorageLocation location : dataDirs) {
goodLocations.put(location, true);
Optional<ListenableFuture<VolumeCheckResult>> olf =
delegateChecker.schedule(location, context);
if (olf.isPresent()) {
futures.put(location, olf.get());
}
}
if (maxVolumeFailuresTolerated >= dataDirs.size()) {
throw new HadoopIllegalArgumentException("Invalid value configured for "
+ DFS_DATANODE_FAILED_VOLUMES_TOLERATED_KEY + " - "
+ maxVolumeFailuresTolerated + ". Value configured is >= "
+ "to the number of configured volumes (" + dataDirs.size() + ").");
}
final long checkStartTimeMs = timer.monotonicNow();
// Retrieve the results of the disk checks.
for (Map.Entry<StorageLocation,
ListenableFuture<VolumeCheckResult>> entry : futures.entrySet()) {
// Determine how much time we can allow for this check to complete.
// The cumulative wait time cannot exceed maxAllowedTimeForCheck.
final long waitSoFarMs = (timer.monotonicNow() - checkStartTimeMs);
final long timeLeftMs = Math.max(0,
maxAllowedTimeForCheckMs - waitSoFarMs);
final StorageLocation location = entry.getKey();
View on GitHub (pinned to 2add963021)
Solutions
- Lower dfs.datanode.failed.volumes.tolerated below the number of configured volumes (dfs.datanode.data.dir entries), or add more data volumes.
- Use -1 to let the DataNode tolerate failures up to all but one volume.
When it happens
Trigger: dfs.datanode.failed.volumes.tolerated is greater than or equal to the number of configured storage volumes, which would permit all volumes to fail.
Common situations: dfs.datanode.failed.volumes.tolerated is >= the number of configured volumes, which would tolerate total storage loss. Lower it below the volume count.
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/b890ce3df46f6e98.
Report an issue: GitHub.