Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@
/**
* Delete multiple paths in one filesystem.
*/
public class StorageBatchDeleteRequest {
public class StorageBatchDeleteRequest
{
private String internalId;

private Set<String> paths;

private String filesystem;
Expand All @@ -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 + '\'' + '}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -424,11 +423,14 @@ public boolean deletionAdditionalGuardCheck( BatchDeleteRequest deleteRequest )
* storage API to handle ancestor folders as needed.
* </p>
*
* @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<String> paths) {
logger.info("Post-action: cleanupEmptyFolder, filesystem={}, paths={}", filesystem, paths);
public void cleanupEmptyFolders( String trackingID, String filesystem, Set<String> 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;
Expand All @@ -442,11 +444,12 @@ public void cleanupEmptyFolders(String filesystem, Set<String> 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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down