summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-04-14 13:27:50 +0200
committerMartin Polden <mpolden@mpolden.no>2020-04-14 15:38:22 +0200
commit60ea36a95f51e01e83a453c60e8dff661260e106 (patch)
tree5c202d5c101bf75a657d3dad6509f64f9fd38a9c /configserver
parentf4ef3b7b5d5281d09663872d264ac8f5286437f9 (diff)
Acquire lock through Curator
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java9
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/Maintainer.java8
2 files changed, 2 insertions, 15 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
index 7ec0f49ed60..7ff5d41485d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
@@ -21,10 +21,8 @@ import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent;
import java.time.Duration;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.logging.Logger;
@@ -49,7 +47,6 @@ public class TenantApplications {
private final Path locksPath;
private final Curator.DirectoryCache directoryCache;
private final ReloadHandler reloadHandler;
- private final Map<ApplicationId, Lock> locks;
private final Executor zkWatcherExecutor;
private TenantApplications(Curator curator, ReloadHandler reloadHandler, TenantName tenant,
@@ -57,7 +54,6 @@ public class TenantApplications {
this.curator = curator;
this.applicationsPath = TenantRepository.getApplicationsPath(tenant);
this.locksPath = TenantRepository.getLocksPath(tenant);
- this.locks = new ConcurrentHashMap<>(2);
this.reloadHandler = reloadHandler;
this.zkWatcherExecutor = command -> zkWatcherExecutor.execute(tenant, command);
this.directoryCache = curator.createDirectoryCache(applicationsPath.getAbsolute(), false, false, zkCacheExecutor);
@@ -148,10 +144,7 @@ public class TenantApplications {
/** Returns the lock for changing the session status of the given application. */
public Lock lock(ApplicationId id) {
- curator.create(lockPath(id));
- Lock lock = locks.computeIfAbsent(id, __ -> new Lock(lockPath(id).getAbsolute(), curator));
- lock.acquire(Duration.ofMinutes(1)); // These locks shouldn't be held for very long.
- return lock;
+ return curator.lock(lockPath(id), Duration.ofMinutes(1)); // These locks shouldn't be held for very long.
}
private void childEvent(CuratorFramework client, PathChildrenCacheEvent event) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/Maintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/Maintainer.java
index d2fd4efa7dc..e40d9153ad1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/Maintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/Maintainer.java
@@ -48,7 +48,7 @@ public abstract class Maintainer extends AbstractComponent implements Runnable {
@Override
@SuppressWarnings({"try", "unused"})
public void run() {
- try (Lock lock = lock(lockRoot.append(name()))) {
+ try (Lock lock = curator.lock(lockRoot.append(name()), Duration.ofSeconds(1))) {
maintain();
} catch (UncheckedTimeoutException e) {
// another config server instance is running this job at the moment; ok
@@ -57,12 +57,6 @@ public abstract class Maintainer extends AbstractComponent implements Runnable {
}
}
- private Lock lock(Path path) {
- Lock lock = new Lock(path.getAbsolute(), curator);
- lock.acquire(Duration.ofSeconds(1));
- return lock;
- }
-
@Override
public void deconstruct() {
this.service.shutdown();