diff --git a/src/main/java/org/commonjava/indy/service/tracking/client/storage/StorageBatchDeleteRequest.java b/src/main/java/org/commonjava/indy/service/tracking/client/storage/StorageBatchDeleteRequest.java
index dcfa8e8..5491e4c 100644
--- a/src/main/java/org/commonjava/indy/service/tracking/client/storage/StorageBatchDeleteRequest.java
+++ b/src/main/java/org/commonjava/indy/service/tracking/client/storage/StorageBatchDeleteRequest.java
@@ -20,7 +20,10 @@
/**
* Delete multiple paths in one filesystem.
*/
-public class StorageBatchDeleteRequest {
+public class StorageBatchDeleteRequest
+{
+ private String internalId;
+
private Set paths;
private String filesystem;
@@ -41,11 +44,20 @@ public void setFilesystem(String filesystem) {
this.filesystem = filesystem;
}
+ public String getInternalId()
+ {
+ return internalId;
+ }
+
+ public void setInternalId( String internalId )
+ {
+ this.internalId = internalId;
+ }
+
@Override
- public String toString() {
- return "BatchDeleteRequest{" +
- "paths=" + paths +
- ", filesystem='" + filesystem + '\'' +
- '}';
+ public String toString()
+ {
+ return "StorageBatchDeleteRequest{" + "internalId='" + internalId + '\'' + ", paths=" + paths + ", filesystem='"
+ + filesystem + '\'' + '}';
}
}
\ No newline at end of file
diff --git a/src/main/java/org/commonjava/indy/service/tracking/client/storage/StorageService.java b/src/main/java/org/commonjava/indy/service/tracking/client/storage/StorageService.java
index 96370c0..bc4a8ec 100644
--- a/src/main/java/org/commonjava/indy/service/tracking/client/storage/StorageService.java
+++ b/src/main/java/org/commonjava/indy/service/tracking/client/storage/StorageService.java
@@ -15,11 +15,11 @@
*/
package org.commonjava.indy.service.tracking.client.storage;
+import jakarta.ws.rs.POST;
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
import org.eclipse.microprofile.rest.client.annotation.RegisterProvider;
import org.commonjava.indy.service.security.jaxrs.CustomClientRequestFilter;
-import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.Consumes;
@@ -32,7 +32,7 @@ public interface StorageService {
/**
* Delete empty folders by Storage BatchDeleteRequest as JSON body.
*/
- @DELETE
+ @POST
@Path("/maint/folders/empty")
@Consumes(APPLICATION_JSON)
Response cleanupEmptyFolders(StorageBatchDeleteRequest request);
diff --git a/src/main/java/org/commonjava/indy/service/tracking/controller/AdminController.java b/src/main/java/org/commonjava/indy/service/tracking/controller/AdminController.java
index 57401ee..e1ead4f 100644
--- a/src/main/java/org/commonjava/indy/service/tracking/controller/AdminController.java
+++ b/src/main/java/org/commonjava/indy/service/tracking/controller/AdminController.java
@@ -15,7 +15,6 @@
*/
package org.commonjava.indy.service.tracking.controller;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.commonjava.indy.service.tracking.Constants;
import org.commonjava.indy.service.tracking.client.content.BatchDeleteRequest;
import org.commonjava.indy.service.tracking.client.content.ContentService;
@@ -424,11 +423,14 @@ public boolean deletionAdditionalGuardCheck( BatchDeleteRequest deleteRequest )
* storage API to handle ancestor folders as needed.
*
*
+ * @param trackingID
* @param filesystem the target filesystem/storeKey as a string
* @param paths the set of deleted file paths
*/
- public void cleanupEmptyFolders(String filesystem, Set paths) {
- logger.info("Post-action: cleanupEmptyFolder, filesystem={}, paths={}", filesystem, paths);
+ public void cleanupEmptyFolders( String trackingID, String filesystem, Set paths )
+ {
+ logger.info("Post-action: cleanupEmptyFolder, trackingID={}, filesystem={}, paths={}",
+ trackingID, filesystem, paths);
if (paths == null || paths.isEmpty()) {
logger.info("No paths to process for cleanup.");
return;
@@ -442,11 +444,12 @@ public void cleanupEmptyFolders(String filesystem, Set paths) {
}
}
StorageBatchDeleteRequest req = new StorageBatchDeleteRequest();
+ req.setInternalId( trackingID );
req.setFilesystem(filesystem);
req.setPaths(folders);
try {
Response resp = storageService.cleanupEmptyFolders(req);
- logger.info("Cleanup empty folders, req: {}, status {}", req, resp.getStatus());
+ logger.info("Cleanup empty folders done, req: {}, status {}", req, resp.getStatus());
} catch (Exception e) {
logger.warn("Failed to cleanup folders, request: {}, error: {}", req, e.getMessage(), e);
}
diff --git a/src/main/java/org/commonjava/indy/service/tracking/jaxrs/AdminResource.java b/src/main/java/org/commonjava/indy/service/tracking/jaxrs/AdminResource.java
index 55e0a8c..3ae674a 100644
--- a/src/main/java/org/commonjava/indy/service/tracking/jaxrs/AdminResource.java
+++ b/src/main/java/org/commonjava/indy/service/tracking/jaxrs/AdminResource.java
@@ -433,7 +433,7 @@ public Response doDelete( @Context final UriInfo uriInfo, final BatchDeleteReque
Response response = maintenanceService.doDelete( request );
if (response.getStatus() == Response.Status.OK.getStatusCode()) {
// Run the cleanupEmptyFolder post-action asynchronously
- CompletableFuture.runAsync(() -> controller.cleanupEmptyFolders(
+ CompletableFuture.runAsync(() -> controller.cleanupEmptyFolders( request.getTrackingID(),
request.getStoreKey().toString(), request.getPaths()), executor);
}
return response;