diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-06-28 13:23:46 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-06-28 13:23:46 +0200 |
commit | b32248cf458a04ffe3cfcf0242e2edc6e28461a8 (patch) | |
tree | a923bbcd947d64c9f414f56ff0b2f260f0060f0a /node-repository | |
parent | 0229966296d14040a3dfdf7003271adc7fdf7fc0 (diff) |
Move CuratorMutex to make it reusable
Diffstat (limited to 'node-repository')
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; |