{"record":{"id":"e71a43b4bdc2798c","repo":"apache/hadoop","slug":"at-least-one-valid-persistent-memory-volume-is-req","errorCode":null,"errorMessage":"At least one valid persistent memory volume is required!","messagePattern":"At least one valid persistent memory volume is required!","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/PmemVolumeManager.java","lineNumber":263,"sourceCode":"          maxBytes = realPmemDir.getUsableSpace();\n        } else {\n          maxBytes = maxBytesPerPmem;\n        }\n        UsedBytesCount usedBytesCount = new UsedBytesCount(maxBytes);\n        this.usedBytesCounts.add(usedBytesCount);\n        LOG.info(\"Added persistent memory - {} with size={}\",\n            volumes[n], maxBytes);\n      } catch (IllegalArgumentException e) {\n        LOG.error(\"Failed to parse persistent memory volume \" + volumes[n], e);\n        continue;\n      } catch (IOException e) {\n        LOG.error(\"Bad persistent memory volume: \" + volumes[n], e);\n        continue;\n      }\n    }\n    count = pmemVolumes.size();\n    if (count == 0) {\n      throw new IOException(\n          \"At least one valid persistent memory volume is required!\");\n    }\n  }\n\n  void cleanup(File realPmemDir) {\n    try {\n      FileUtils.cleanDirectory(realPmemDir);\n    } catch (IOException e) {\n      LOG.error(\"Failed to clean up \" + realPmemDir.getPath(), e);\n    }\n  }\n\n  void cleanup() {\n    // Remove all files under the volume.\n    for (String pmemVolume : pmemVolumes) {\n      cleanup(new File(pmemVolume));\n    }\n  }","sourceCodeStart":245,"sourceCodeEnd":281,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/PmemVolumeManager.java#L245-L281","documentation":"Error \"At least one valid persistent memory volume is required!\" thrown in apache/hadoop.","triggerScenarios":"PmemVolumeManager initialization when none of the configured persistent memory directories is usable.","commonSituations":"See trigger scenarios.","solutions":["Verify each path in dfs.datanode.pmem.cache.dirs is a mounted DAX-enabled pmem device and accessible by the DataNode user.","Fix or remove invalid pmem volume entries so at least one volume initializes successfully, 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"}