summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2017-06-28 13:23:46 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2017-06-28 13:23:46 +0200
commitb32248cf458a04ffe3cfcf0242e2edc6e28461a8 (patch)
treea923bbcd947d64c9f414f56ff0b2f260f0060f0a /node-repository
parent0229966296d14040a3dfdf7003271adc7fdf7fc0 (diff)
Move CuratorMutex to make it reusable
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/JobControl.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabase.java1
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java1
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorMutex.java53
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java1
5 files changed, 4 insertions, 54 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/JobControl.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/JobControl.java
index 7ad4d87eea9..53400f56feb 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/JobControl.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/JobControl.java
@@ -2,7 +2,7 @@
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.vespa.hosted.provision.persistence.CuratorDatabaseClient;
-import com.yahoo.vespa.hosted.provision.persistence.CuratorMutex;
+import com.yahoo.vespa.curator.CuratorMutex;
import java.util.HashSet;
import java.util.Set;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabase.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabase.java
index e843fe63f09..4244a66e798 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabase.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabase.java
@@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableList;
import com.yahoo.path.Path;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.curator.Curator;
+import com.yahoo.vespa.curator.CuratorMutex;
import com.yahoo.vespa.curator.recipes.CuratorCounter;
import com.yahoo.vespa.curator.transaction.CuratorTransaction;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
index 96f7bc2ceb5..71faf627196 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
@@ -12,6 +12,7 @@ import com.yahoo.log.LogLevel;
import com.yahoo.path.Path;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.curator.Curator;
+import com.yahoo.vespa.curator.CuratorMutex;
import com.yahoo.vespa.curator.transaction.CuratorOperations;
import com.yahoo.vespa.curator.transaction.CuratorTransaction;
import com.yahoo.vespa.hosted.provision.Node;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorMutex.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorMutex.java
deleted file mode 100644
index f5131236ba3..00000000000
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorMutex.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.provision.persistence;
-
-import com.google.common.util.concurrent.UncheckedTimeoutException;
-import com.yahoo.transaction.Mutex;
-import org.apache.curator.framework.CuratorFramework;
-import org.apache.curator.framework.recipes.locks.InterProcessMutex;
-
-import java.time.Duration;
-import java.util.concurrent.TimeUnit;
-
-/**
- * A cluster-wide reentrant mutex which is released on (the last symmetric) close
- *
- * @author bratseth
- */
-public class CuratorMutex implements Mutex {
-
- private final InterProcessMutex mutex;
- private final String lockPath;
-
- public CuratorMutex(String lockPath, CuratorFramework curator) {
- this.lockPath = lockPath;
- mutex = new InterProcessMutex(curator, lockPath);
- }
-
- /** Take the lock with the given timeout. This may be called multiple times from the same thread - each matched by a close */
- public void acquire(Duration timeout) {
- boolean acquired;
- try {
- acquired = mutex.acquire(timeout.toMillis(), TimeUnit.MILLISECONDS);
- }
- catch (Exception e) {
- throw new RuntimeException("Exception acquiring lock '" + lockPath + "'", e);
- }
-
- if (! acquired) throw new UncheckedTimeoutException("Timed out after waiting " + timeout.toString() +
- " to acquire lock + '" + lockPath + "'");
- }
-
- @Override
- public void close() {
- try {
- mutex.release();
- }
- catch (Exception e) {
- throw new RuntimeException("Exception releasing lock '" + lockPath + "'");
- }
- }
-
-}
-
-
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java
index 0994b11d663..0a5e149d332 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java
@@ -8,6 +8,7 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.curator.Curator;
+import com.yahoo.vespa.curator.CuratorMutex;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.provisioning.FlavorConfigBuilder;