mirror of https://github.com/apache/jclouds.git
fix for deleting an invalid file
If the file for delete is invalid (typically a wrong filename) an IOException will be thrown.
This commit is contained in:
parent
1a23a16343
commit
9bf7c5da5a
|
@ -27,6 +27,7 @@ import java.nio.file.DirectoryNotEmptyException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.NoSuchFileException;
|
import java.nio.file.NoSuchFileException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.InvalidPathException;
|
||||||
import java.nio.file.attribute.AclEntry;
|
import java.nio.file.attribute.AclEntry;
|
||||||
import java.nio.file.attribute.AclEntryPermission;
|
import java.nio.file.attribute.AclEntryPermission;
|
||||||
import java.nio.file.attribute.AclEntryType;
|
import java.nio.file.attribute.AclEntryType;
|
||||||
|
@ -77,10 +78,17 @@ public class Utils {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void delete(File file) throws IOException {
|
public static void delete(File file) throws IOException {
|
||||||
|
Path path;
|
||||||
|
try {
|
||||||
|
path = file.toPath();
|
||||||
|
} catch (InvalidPathException ipe) {
|
||||||
|
throw new IOException("Invalid file: " + file, ipe);
|
||||||
|
}
|
||||||
|
|
||||||
for (int n = 0; n < 10; n++) {
|
for (int n = 0; n < 10; n++) {
|
||||||
try {
|
try {
|
||||||
Files.delete(file.toPath());
|
Files.delete(path);
|
||||||
if (Files.exists(file.toPath())) {
|
if (Files.exists(path)) {
|
||||||
Uninterruptibles.sleepUninterruptibly(200, TimeUnit.MILLISECONDS);
|
Uninterruptibles.sleepUninterruptibly(200, TimeUnit.MILLISECONDS);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -98,7 +106,7 @@ public class Utils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// File could not be deleted multiple times. It is very likely locked in another process
|
// File could not be deleted multiple times. It is very likely locked in another process
|
||||||
throw new IOException("Could not delete: " + file.toPath());
|
throw new IOException("Could not delete: " + path);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -29,6 +29,7 @@ import static org.testng.Assert.fail;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.file.InvalidPathException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -685,6 +686,16 @@ public class FilesystemStorageStrategyImplTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeletingInvalidPathFileEndsNormally() {
|
||||||
|
String invalidPathBlobKey = "A<!:!@#$%^&*?]8 /\0";
|
||||||
|
try {
|
||||||
|
storageStrategy.removeBlob(CONTAINER_NAME, invalidPathBlobKey);
|
||||||
|
} catch (InvalidPathException ipe) {
|
||||||
|
fail("Deleting an invalid path ended with an InvalidPathException.", ipe);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------- Private methods
|
// ---------------------------------------------------------- Private methods
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue