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

  1. Lower dfs.datanode.failed.volumes.tolerated below the number of configured volumes (dfs.datanode.data.dir entries), or add more data volumes.
  2. 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.