{"record":{"id":"3978b65147734e89","repo":"apache/hadoop","slug":"no-more-available-volumes-3978b6","errorCode":null,"errorMessage":"No more available volumes","messagePattern":"No more available volumes","errorType":"exception","errorClass":"DiskOutOfSpaceException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/RoundRobinVolumeChoosingPolicy.java","lineNumber":83,"sourceCode":"        DFS_DATANODE_ROUND_ROBIN_VOLUME_CHOOSING_POLICY_ADDITIONAL_AVAILABLE_SPACE_DEFAULT);\n\n    LOG.info(\"Round robin volume choosing policy initialized: \" +\n        DFS_DATANODE_ROUND_ROBIN_VOLUME_CHOOSING_POLICY_ADDITIONAL_AVAILABLE_SPACE_KEY +\n        \" = \" + additionalAvailableSpace);\n  }\n\n  @Override\n  public Configuration getConf() {\n    // Nothing to do. Only added to fulfill the Configurable contract.\n    return null;\n  }\n\n  @Override\n  public V chooseVolume(final List<V> volumes, long blockSize, String storageId)\n      throws IOException {\n\n    if (volumes.size() < 1) {\n      throw new DiskOutOfSpaceException(\"No more available volumes\");\n    }\n\n    // As all the items in volumes are with the same storage type,\n    // so only need to get the storage type index of the first item in volumes\n    StorageType storageType = volumes.get(0).getStorageType();\n    int index = storageType != null ?\n            storageType.ordinal() : StorageType.DEFAULT.ordinal();\n\n    synchronized (syncLocks[index]) {\n      return chooseVolume(index, volumes, blockSize);\n    }\n  }\n\n  private V chooseVolume(final int curVolumeIndex, final List<V> volumes,\n                         long blockSize) throws IOException {\n    // since volumes could've been removed because of the failure\n    // make sure we are not out of bounds\n    int curVolume = curVolumes[curVolumeIndex] < volumes.size()","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/RoundRobinVolumeChoosingPolicy.java#L65-L101","documentation":"Error \"No more available volumes\" thrown in apache/hadoop.","triggerScenarios":"Block allocation when the round-robin volume choosing policy finds no volume with free space, i.e. all DataNode volumes are full or failed.","commonSituations":"See trigger scenarios.","solutions":["Free disk space on the DataNode volumes or add more volumes to dfs.datanode.data.dir.","Check the DataNode log for failed volumes and repair or replace the underlying disks.","Verify dfs.datanode.data.dir paths are mounted and writable, then restart the DataNode."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}