HADOOP-19196. Allow base path to be deleted as well using Bulk Delete. (#6872)

Contributed by: Mukund Thakur
This commit is contained in:
Mukund Thakur 2024-06-11 14:06:53 -05:00 committed by GitHub
parent 005030f7a0
commit 06dd3bfee8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 4 deletions

View File

@ -48,14 +48,14 @@ public static void validateBulkDeletePaths(Collection<Path> paths, int pageSize,
} }
/** /**
* Check if a path is under a base path. * Check if a given path is the base path or under the base path.
* @param p path to check. * @param p path to check.
* @param basePath base path. * @param basePath base path.
* @return true if the path is under the base path. * @return true if the given path is the base path or under the base path.
*/ */
public static boolean validatePathIsUnderParent(Path p, Path basePath) { public static boolean validatePathIsUnderParent(Path p, Path basePath) {
while (p.getParent() != null) { while (p != null) {
if (p.getParent().equals(basePath)) { if (p.equals(basePath)) {
return true; return true;
} }
p = p.getParent(); p = p.getParent();

View File

@ -23,6 +23,7 @@ in an object store or filesystem.
* An API for submitting a list of paths to delete. * An API for submitting a list of paths to delete.
* This list must be no larger than the "page size" supported by the client; This size is also exposed as a method. * This list must be no larger than the "page size" supported by the client; This size is also exposed as a method.
* This list must not have any path outside the base path.
* Triggers a request to delete files at the specific paths. * Triggers a request to delete files at the specific paths.
* Returns a list of which paths were reported as delete failures by the store. * Returns a list of which paths were reported as delete failures by the store.
* Does not consider a nonexistent file to be a failure. * Does not consider a nonexistent file to be a failure.

View File

@ -20,6 +20,7 @@
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -167,6 +168,17 @@ public void testDeletePathsNotUnderBase() throws Exception {
() -> bulkDelete_delete(getFileSystem(), basePath, paths)); () -> bulkDelete_delete(getFileSystem(), basePath, paths));
} }
/**
* We should be able to delete the base path itself
* using bulk delete operation.
*/
@Test
public void testDeletePathSameAsBasePath() throws Exception {
assertSuccessfulBulkDelete(bulkDelete_delete(getFileSystem(),
basePath,
Arrays.asList(basePath)));
}
/** /**
* This test should fail as path is not absolute. * This test should fail as path is not absolute.
*/ */