aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-01-09 13:46:29 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-09 13:50:14 -0800
commit7f17d08d5be04d1fc393958c9895747c9dc88b30 (patch)
tree2de1b6538ea5c6d6a0e014fdff2a07d94623ad2d /src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java
parent457a226f69ab56109fd5ec9163ac57181d715bda (diff)
Automated rollback of commit cb7689404ef9a69488d64bfc2e0bfb9326e664d6.
*** Reason for rollback *** Rolling forward after the underlying issue has been fixed. *** Original change description *** Automated rollback of commit 6a54339bb943702bd7dffc43f85267dac98dc355. *** Reason for rollback *** b/71442447 *** Original change description *** Call through to Path#createDirectoryAndParents from FileUtils. This CL removes a method that due to its implementation causes threading difficulties for Path#createDirectory. The tests for the method are brought across to FileSystemTests since the methods are now implemented natively by the FileSystem classes. The tests were also cleaned up. The test revealed an edge c... *** PiperOrigin-RevId: 181367850
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java43
1 files changed, 6 insertions, 37 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java b/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java
index e42abdfd8a..adeb9c847c 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java
@@ -616,46 +616,15 @@ public class FileSystemUtils {
}
/**
- * Attempts to create a directory with the name of the given path, creating
- * ancestors as necessary.
+ * Attempts to create a directory with the name of the given path, creating ancestors as
+ * necessary.
*
- * <p>Postcondition: completes normally iff {@code dir} denotes an existing
- * directory (not necessarily canonical); completes abruptly otherwise.
- *
- * @return true if the directory was successfully created anew, false if it
- * already existed (including the case where {@code dir} denotes a symlink
- * to an existing directory)
- * @throws IOException if the directory could not be created
+ * <p>Deprecated. Prefer to call {@link Path#createDirectoryAndParents()} directly.
*/
+ @Deprecated
@ThreadSafe
- public static boolean createDirectoryAndParents(Path dir) throws IOException {
- // Optimised for minimal number of I/O calls.
-
- // Don't attempt to create the root directory.
- if (dir.getParentDirectory() == null) {
- return false;
- }
-
- FileSystem filesystem = dir.getFileSystem();
- if (filesystem instanceof UnionFileSystem) {
- // If using UnionFS, make sure that we do not traverse filesystem boundaries when creating
- // parent directories by rehoming the path on the most specific filesystem.
- FileSystem delegate = ((UnionFileSystem) filesystem).getDelegate(dir);
- dir = delegate.getPath(dir.asFragment());
- }
-
- try {
- return dir.createDirectory();
- } catch (IOException e) {
- if (e.getMessage().endsWith(" (No such file or directory)")) { // ENOENT
- createDirectoryAndParents(dir.getParentDirectory());
- return dir.createDirectory();
- } else if (e.getMessage().endsWith(" (File exists)") && dir.isDirectory()) { // EEXIST
- return false;
- } else {
- throw e; // some other error (e.g. ENOTDIR, EACCES, etc.)
- }
- }
+ public static void createDirectoryAndParents(Path dir) throws IOException {
+ dir.createDirectoryAndParents();
}
/**