summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-07-08 10:01:45 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-07-08 10:01:45 +0200
commit08afd426d391fa66f51be424b1f6b2f593b8e116 (patch)
tree6740d5d653876d48a1b610fbe8200039b454843a /configserver
parent679ed0d71e2548d4984989f9828dc71c66267ccf (diff)
Support recursivetransactional delete in zk
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java10
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java2
2 files changed, 9 insertions, 3 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java
index 5510829af23..67735c35262 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java
@@ -178,6 +178,8 @@ public class LocalSession extends Session implements Comparable<LocalSession> {
}
}
+ // The rest of this class should be moved elsewhere ...
+
private static class FileTransaction extends AbstractTransaction {
public static FileTransaction from(FileOperation operation) {
@@ -212,7 +214,11 @@ public class LocalSession extends Session implements Comparable<LocalSession> {
void commit();
}
-
+
+ /**
+ * Recursively deletes this path and everything below.
+ * Succeeds with no action if the path does not exist.
+ */
private static class DeleteOperation implements FileOperation {
private final String pathToDelete;
@@ -223,7 +229,7 @@ public class LocalSession extends Session implements Comparable<LocalSession> {
@Override
public void commit() {
- // TODO: Consider checking path existence first and throwing exception if it exists but the call returns false
+ // TODO: Check delete access in prepare()
IOUtils.recursiveDeleteDir(new File(pathToDelete));
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
index 15df0373ac6..da1fda43f9f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
@@ -126,7 +126,7 @@ public class SessionZooKeeperClient {
/** Returns a transaction deleting this session on commit */
public CuratorTransaction deleteTransaction() {
- return CuratorTransaction.from(CuratorOperations.delete(rootPath.getAbsolute()), curator);
+ return CuratorTransaction.from(CuratorOperations.deleteAll(rootPath.getAbsolute(), curator), curator);
}
public ApplicationPackage loadApplicationPackage() {