This is an automated email from the ASF dual-hosted git repository.
mchades pushed a commit to branch branch-0.7
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-0.7 by this push:
new 872298289 [#5947] fix(auth): It will throw error if we enable
authorization and rename catalog (#5949) (#5953)
872298289 is described below
commit 8722982891a15e7a316fa28cfcc00149f2fd78a0
Author: roryqi <[email protected]>
AuthorDate: Mon Dec 23 18:28:37 2024 +0800
[#5947] fix(auth): It will throw error if we enable authorization and
rename catalog (#5949) (#5953)
### What changes were proposed in this pull request?
Fix the issue of renaming catalogs or metalakes.
### Why are the changes needed?
Fix: #5947
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Add UT.
---
.../ranger/integration/test/RangerHiveE2EIT.java | 16 ++++++++++++++++
.../gravitino/authorization/AuthorizationUtils.java | 9 +++++++--
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git
a/authorizations/authorization-ranger/src/test/java/org/apache/gravitino/authorization/ranger/integration/test/RangerHiveE2EIT.java
b/authorizations/authorization-ranger/src/test/java/org/apache/gravitino/authorization/ranger/integration/test/RangerHiveE2EIT.java
index 409ddf48e..34e5cb4e2 100644
---
a/authorizations/authorization-ranger/src/test/java/org/apache/gravitino/authorization/ranger/integration/test/RangerHiveE2EIT.java
+++
b/authorizations/authorization-ranger/src/test/java/org/apache/gravitino/authorization/ranger/integration/test/RangerHiveE2EIT.java
@@ -39,9 +39,11 @@ import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.apache.gravitino.Catalog;
+import org.apache.gravitino.CatalogChange;
import org.apache.gravitino.Configs;
import org.apache.gravitino.MetadataObject;
import org.apache.gravitino.MetadataObjects;
+import org.apache.gravitino.MetalakeChange;
import org.apache.gravitino.NameIdentifier;
import org.apache.gravitino.auth.AuthConstants;
import org.apache.gravitino.auth.AuthenticatorType;
@@ -235,6 +237,20 @@ public class RangerHiveE2EIT extends BaseIT {
RangerITEnv.cleanup();
}
+ // ISSUE-5947: can't rename a catalog or a metalake
+ @Test
+ void testRenameMetalakeOrCatalog() {
+ Assertions.assertDoesNotThrow(
+ () -> client.alterMetalake(metalakeName,
MetalakeChange.rename("new_name")));
+ Assertions.assertDoesNotThrow(
+ () -> client.alterMetalake("new_name",
MetalakeChange.rename(metalakeName)));
+
+ Assertions.assertDoesNotThrow(
+ () -> metalake.alterCatalog(catalogName,
CatalogChange.rename("new_name")));
+ Assertions.assertDoesNotThrow(
+ () -> metalake.alterCatalog("new_name",
CatalogChange.rename(catalogName)));
+ }
+
@Test
void testCreateSchema() throws InterruptedException {
// First, fail to create the schema
diff --git
a/core/src/main/java/org/apache/gravitino/authorization/AuthorizationUtils.java
b/core/src/main/java/org/apache/gravitino/authorization/AuthorizationUtils.java
index ca5866558..7c28cafb0 100644
---
a/core/src/main/java/org/apache/gravitino/authorization/AuthorizationUtils.java
+++
b/core/src/main/java/org/apache/gravitino/authorization/AuthorizationUtils.java
@@ -298,9 +298,14 @@ public class AuthorizationUtils {
NameIdentifierUtil.toMetadataObject(NameIdentifier.of(ident.namespace(),
newName), type);
MetadataObjectChange renameObject =
MetadataObjectChange.rename(oldMetadataObject, newMetadataObject);
+
+ String metalake = type == Entity.EntityType.METALAKE ? newName :
ident.namespace().level(0);
+
+ // For a renamed catalog, we should pass the new name catalog, otherwise
we can't find the
+ // catalog in the entity store
callAuthorizationPluginForMetadataObject(
- ident.namespace().level(0),
- oldMetadataObject,
+ metalake,
+ newMetadataObject,
authorizationPlugin -> {
authorizationPlugin.onMetadataUpdated(renameObject);
});