{"record":{"id":"953f13808d900ffb","repo":"apache/hadoop","slug":"snapshot-name-cannot-contain","errorCode":null,"errorMessage":"Snapshot name cannot contain \"/\"","messagePattern":"Snapshot name cannot contain \"/\"","errorType":"exception","errorClass":"HadoopIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirSnapshotOp.java","lineNumber":56,"sourceCode":"import org.apache.hadoop.util.Time;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;\n\nclass FSDirSnapshotOp {\n  public static final Logger LOG =\n      LoggerFactory.getLogger(FSDirSnapshotOp.class);\n\n  /** Verify if the snapshot name is legal. */\n  static void verifySnapshotName(FSDirectory fsd, String snapshotName,\n      String path)\n      throws FSLimitException.PathComponentTooLongException {\n    if (snapshotName.contains(Path.SEPARATOR)) {\n      throw new HadoopIllegalArgumentException(\n          \"Snapshot name cannot contain \\\"\" + Path.SEPARATOR + \"\\\"\");\n    }\n    final byte[] bytes = DFSUtil.string2Bytes(snapshotName);\n    fsd.verifyINodeName(bytes);\n    fsd.verifyMaxComponentLength(bytes, path);\n  }\n\n  /** Allow snapshot on a directory. */\n  static void allowSnapshot(FSDirectory fsd, SnapshotManager snapshotManager,\n                            String path) throws IOException {\n    fsd.writeLock();\n    try {\n      snapshotManager.setSnapshottable(path, true);\n    } finally {\n      fsd.writeUnlock();\n    }\n    fsd.getEditLog().logAllowSnapshot(path);\n  }","sourceCodeStart":38,"sourceCodeEnd":74,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirSnapshotOp.java#L38-L74","documentation":"Error \"Snapshot name cannot contain \"/\"\" thrown in apache/hadoop.","triggerScenarios":"Creating or renaming a snapshot with a name containing the path separator character '/'.","commonSituations":"See trigger scenarios.","solutions":["Use a snapshot name without '/' characters, e.g. 'snap1' instead of 'a/b'."],"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-22T20:17:22.307Z"}