From b90d99ab9dca7b3b8d469cd0c1aefb86dd11cd30 Mon Sep 17 00:00:00 2001 From: Ramesh Mani Date: Fri, 8 May 2026 00:39:05 -0700 Subject: [PATCH 1/2] RANGER-5577:API to support bulk delete of resources in DataShare --- .../src/main/java/org/apache/ranger/rest/GdsREST.java | 10 +++++++--- .../test/java/org/apache/ranger/rest/TestGdsREST.java | 7 +++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java b/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java index f54d058c1c2..ca36add375e 100755 --- a/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java @@ -1292,12 +1292,16 @@ public void removeSharedResource(@PathParam("id") Long resourceId) { @DELETE @Path("/resources") @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.REMOVE_SHARED_RESOURCES + "\")") - public void removeSharedResources(List resourceIds) { - LOG.debug("==> GdsREST.removeSharedResources({})", resourceIds); + public void removeSharedResources(@QueryParam("resourceIds") List resourceIds) { + LOG.debug("==> GdsREST.removeSharedResources(resourceIds={})", resourceIds); RangerPerfTracer perf = null; try { + if (resourceIds == null) { + throw new Exception("resourceIds must not be null"); + } + if (resourceIds.size() > SHARED_RESOURCES_MAX_BATCH_SIZE) { throw new Exception("removeSharedResources batch size exceeded the configured limit: Maximum allowed is " + SHARED_RESOURCES_MAX_BATCH_SIZE); } @@ -1317,7 +1321,7 @@ public void removeSharedResources(List resourceIds) { RangerPerfTracer.log(perf); } - LOG.debug("<== GdsREST.removeSharedResources({})", resourceIds); + LOG.debug("<== GdsREST.removeSharedResources(resourceIds={})", resourceIds); } @GET diff --git a/security-admin/src/test/java/org/apache/ranger/rest/TestGdsREST.java b/security-admin/src/test/java/org/apache/ranger/rest/TestGdsREST.java index 3f4982b38f1..dfe0b868cd4 100644 --- a/security-admin/src/test/java/org/apache/ranger/rest/TestGdsREST.java +++ b/security-admin/src/test/java/org/apache/ranger/rest/TestGdsREST.java @@ -962,6 +962,13 @@ public void testRemoveSharedResourcesBatchSizeExceeded() { assertThrows(WebApplicationException.class, () -> gdsREST.removeSharedResources(resourceIds)); } + @Test + public void testRemoveSharedResourcesNullResourceIds() { + Mockito.when(restErrorUtil.createRESTException(Mockito.anyString())).thenReturn(new WebApplicationException()); + + assertThrows(WebApplicationException.class, () -> gdsREST.removeSharedResources(null)); + } + @Test public void testGetSharedResource() { Long resourceId = 1L; From 9009703be065d0de7a9bd79672154cca17a67d5d Mon Sep 17 00:00:00 2001 From: Ramesh Mani Date: Fri, 8 May 2026 13:36:39 -0700 Subject: [PATCH 2/2] RANGER-5577:API to support bulk delete of resources in DataShare - Fixed review comments --- .../java/org/apache/ranger/rest/GdsREST.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java b/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java index ca36add375e..fbc367f457e 100755 --- a/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java @@ -1292,36 +1292,36 @@ public void removeSharedResource(@PathParam("id") Long resourceId) { @DELETE @Path("/resources") @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.REMOVE_SHARED_RESOURCES + "\")") - public void removeSharedResources(@QueryParam("resourceIds") List resourceIds) { - LOG.debug("==> GdsREST.removeSharedResources(resourceIds={})", resourceIds); + public void removeSharedResources(@QueryParam("id") List id) { + LOG.debug("==> GdsREST.removeSharedResources(resourceIds={})", id); RangerPerfTracer perf = null; try { - if (resourceIds == null) { + if (id == null) { throw new Exception("resourceIds must not be null"); } - if (resourceIds.size() > SHARED_RESOURCES_MAX_BATCH_SIZE) { + if (id.size() > SHARED_RESOURCES_MAX_BATCH_SIZE) { throw new Exception("removeSharedResources batch size exceeded the configured limit: Maximum allowed is " + SHARED_RESOURCES_MAX_BATCH_SIZE); } if (RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) { - perf = RangerPerfTracer.getPerfTracer(PERF_LOG, "GdsREST.removeSharedResources(" + resourceIds + ")"); + perf = RangerPerfTracer.getPerfTracer(PERF_LOG, "GdsREST.removeSharedResources(" + id + ")"); } - gdsStore.removeSharedResources(resourceIds); + gdsStore.removeSharedResources(id); } catch (WebApplicationException excp) { throw excp; } catch (Throwable excp) { - LOG.error("removeSharedResources({}) failed", resourceIds, excp); + LOG.error("removeSharedResources({}) failed", id, excp); throw restErrorUtil.createRESTException(excp.getMessage()); } finally { RangerPerfTracer.log(perf); } - LOG.debug("<== GdsREST.removeSharedResources(resourceIds={})", resourceIds); + LOG.debug("<== GdsREST.removeSharedResources(resourceIds={})", id); } @GET