{"record":{"id":"f03a8e56047fa499","repo":"apache/hadoop","slug":"permission-denied-while-accessing-pool-user","errorCode":null,"errorMessage":"Permission denied while accessing pool {}: user {} does not have {} permissions.","messagePattern":"Permission denied while accessing pool (.+?): user (.+?) does not have (.+?) permissions\\.","errorType":"exception","errorClass":"AccessControlException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSPermissionChecker.java","lineNumber":844,"sourceCode":"      throws AccessControlException {\n    FsPermission mode = pool.getMode();\n    if (isSuperUser()) {\n      return;\n    }\n    if (getUser().equals(pool.getOwnerName())\n        && mode.getUserAction().implies(access)) {\n      return;\n    }\n    if (isMemberOfGroup(pool.getGroupName())\n        && mode.getGroupAction().implies(access)) {\n      return;\n    }\n    if (!getUser().equals(pool.getOwnerName())\n        && !isMemberOfGroup(pool.getGroupName())\n        && mode.getOtherAction().implies(access)) {\n      return;\n    }\n    throw new AccessControlException(\"Permission denied while accessing pool \"\n        + pool.getPoolName() + \": user \" + getUser() + \" does not have \"\n        + access.toString() + \" permissions.\");\n  }\n\n  /**\n   * Verifies that all existing ancestors are directories.  If a permission\n   * checker is provided then the user must have exec access.  Ancestor\n   * symlinks will throw an unresolved exception, and resolveLink determines\n   * if the last inode will throw an unresolved exception.  This method\n   * should always be called after a path is resolved into an IIP.\n   * @param pc for permission checker, null for no checking\n   * @param iip path to verify\n   * @param resolveLink whether last inode may be a symlink\n   * @throws AccessControlException\n   * @throws UnresolvedPathException\n   * @throws ParentNotDirectoryException\n   */\n  static void checkTraverse(FSPermissionChecker pc, INodesInPath iip,","sourceCodeStart":826,"sourceCodeEnd":862,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSPermissionChecker.java#L826-L862","documentation":"Error \"Permission denied while accessing pool {}: user {} does not have {} permissions.\" thrown in apache/hadoop.","triggerScenarios":"A user accesses a snapshot diff/Listing on a block pool or storage pool without the required pool-level permission.","commonSituations":"Snapshot-diff or pool-scoped admin operations by a user lacking pool ACL permissions.","solutions":["Grant the user the required permission on the storage pool (via dfs.namenode.posix.acl.inheritance or admin config) or use an authorized account."],"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"}