private void removeUserTableHdfsAcl(Table aclTable, String userName, TableName tableName,
    UserPermission userPermission) throws IOException {
    if (SnapshotScannerHDFSAclStorage.hasUserTableHdfsAcl(aclTable, userName, tableName)) {
      if (
        !SnapshotScannerHDFSAclStorage.hasUserGlobalHdfsAcl(aclTable, userName)
          && !SnapshotScannerHDFSAclStorage.hasUserNamespaceHdfsAcl(aclTable, userName,
            tableName.getNamespaceAsString())
      ) {
        // 1. Remove table acls
        hdfsAclHelper.revokeAcl(userPermission, new HashSet<>(0), new HashSet<>(0));
      }
      // 2. Remove table user acl is synced to HDFS in acl table
      SnapshotScannerHDFSAclStorage.deleteUserTableHdfsAcl(aclTable, userName, tableName);
    }
  }
Delete namespace tmp directory because it's created by this coprocessor when namespace is
created to make namespace default acl can be inherited by tables. The namespace data
directory is deleted by DeleteNamespaceProcedure, the namespace archive directory is
deleted by HFileCleaner.
hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclController.java