aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-11-06 16:34:41 +0100
committerMartin Polden <mpolden@mpolden.no>2019-11-07 08:38:26 +0100
commit88fb8dccc75454cee484a9ba177ff006c7fc77b9 (patch)
tree5d2a4e7671c98bac3a5d1707a780a9c89a7f1476 /node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
parent4187b1391bf383028a3ffd1480aacd70c1db287b (diff)
Do not follow links when deleting recursively
...like the Javadoc already says.
Diffstat (limited to 'node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
index 20a02e91bce..abb3318d31a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
@@ -178,10 +178,19 @@ public class UnixPath {
return this;
}
+ /**
+ * Returns whether this path is a directory. Symlinks are followed, so this returns true for symlinks pointing to a
+ * directory.
+ */
public boolean isDirectory() {
return uncheck(() -> Files.isDirectory(path));
}
+ /** Returns whether this is a symlink */
+ public boolean isSymbolicSymlink() {
+ return Files.isSymbolicLink(path);
+ }
+
/**
* Similar to rm -rf file:
* - It's not an error if file doesn't exist
@@ -189,12 +198,11 @@ public class UnixPath {
* - For symlinks: Only the symlink is removed, not what the symlink points to
*/
public boolean deleteRecursively() {
- if (isDirectory()) {
+ if (!isSymbolicSymlink() && isDirectory()) {
for (UnixPath path : listContentsOfDirectory()) {
path.deleteRecursively();
}
}
-
return uncheck(() -> Files.deleteIfExists(path));
}