diff options
author | Jon Bratseth <bratseth@oath.com> | 2020-04-14 15:47:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-14 15:47:58 +0200 |
commit | 60f845464bb5332428737086282157500726f247 (patch) | |
tree | 018d6f311edf3ede3c56209bb120e440c406151b /configserver | |
parent | decc08cb94e432008ab0466b1c773f0786725846 (diff) | |
parent | 60ea36a95f51e01e83a453c60e8dff661260e106 (diff) |
Merge pull request #12904 from vespa-engine/mpolden/config-lock
Hold config lock when modifying load balancers
Diffstat (limited to 'configserver')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java | 9 | ||||
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/Maintainer.java | 8 |
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(); |