Skip to content

Commit

Permalink
HBASE-27469 IllegalArgumentException is thrown by SnapshotScannerHDFS…
Browse files Browse the repository at this point in the history
…AclController when dropping a table (#4865)

Signed-off-by: Duo Zhang <zhangduo@apache.org>
  • Loading branch information
ddupg authored Nov 15, 2022
1 parent 047f4e2 commit e5463e8
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -555,7 +555,7 @@ boolean checkInitialized(String operation) {
if (aclTableInitialized) {
return true;
} else {
LOG.warn("Skip set HDFS acls because acl table is not initialized when " + operation);
LOG.warn("Skip set HDFS acls because acl table is not initialized when {}", operation);
}
}
return false;
Expand Down Expand Up @@ -610,7 +610,7 @@ private Set<String> filterUsersToRemoveNsAccessAcl(Table aclTable, TableName tab
PermissionStorage.isGlobalEntry(entry)
|| (PermissionStorage.isNamespaceEntry(entry)
&& Bytes.equals(PermissionStorage.fromNamespaceEntry(entry), namespace))
|| (!Bytes.equals(tableName.getName(), entry)
|| (PermissionStorage.isTableEntry(entry) && !Bytes.equals(tableName.getName(), entry)
&& Bytes.equals(TableName.valueOf(entry).getNamespace(), namespace))
) {
remove = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,7 @@ public void testDeleteTable() throws Exception {
// delete table
admin.disableTable(table);
admin.deleteTable(table);
// grantUser2 and grantUser3 should have data/ns acl
// grantUser2 should have data/ns acl
TestHDFSAclHelper.canUserScanSnapshot(TEST_UTIL, grantUser1, snapshot1, -1);
TestHDFSAclHelper.canUserScanSnapshot(TEST_UTIL, grantUser2, snapshot1, 6);
assertTrue(hasUserNamespaceHdfsAcl(aclTable, grantUserName2, namespace));
Expand All @@ -673,6 +673,26 @@ public void testDeleteTable() throws Exception {
deleteTable(table);
}

@Test
public void testDeleteTable2() throws Exception {
String namespace1 = name.getMethodName() + "1";
String namespace2 = name.getMethodName() + "2";
String grantUser = name.getMethodName();
TableName table = TableName.valueOf(namespace1, name.getMethodName());

TestHDFSAclHelper.createTableAndPut(TEST_UTIL, table);
// grant user table permission
TestHDFSAclHelper.grantOnTable(TEST_UTIL, grantUser, table, READ);
// grant user other namespace permission
SecureTestUtil.grantOnNamespace(TEST_UTIL, grantUser, namespace2, READ);
// delete table
admin.disableTable(table);
admin.deleteTable(table);
// grantUser should have namespace2's acl
assertFalse(hasUserTableHdfsAcl(aclTable, grantUser, table));
assertTrue(hasUserNamespaceHdfsAcl(aclTable, grantUser, namespace2));
}

@Test
public void testDeleteNamespace() throws Exception {
String grantUserName = name.getMethodName();
Expand Down

0 comments on commit e5463e8

Please sign in to comment.