diff options
author | Harald Musum <musum@yahooinc.com> | 2021-11-04 12:26:46 +0100 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2021-11-04 12:26:46 +0100 |
commit | e54f5c093d208d3f6031ff10e7804f6b380951ec (patch) | |
tree | 6696833b91e8312ec83bcb66e360519aa8b844ad /configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java | |
parent | 8e165140c2726e4434e56a032aeadd012943dca6 (diff) |
Run some config server maintainers without maintanence job lock
Some maintainers only operate on local data and can be run
simultaneously across servers (ApplicationPackageMaintainer and
FileDistributionMaintainer changed to do this in this PR) without
distributed locking
Diffstat (limited to 'configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java index 9d1901f83ed..ce068f4929e 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java @@ -33,8 +33,8 @@ public abstract class ConfigServerMaintainer extends Maintainer { /** Creates a maintainer where maintainers on different nodes in this cluster run with even delay. */ ConfigServerMaintainer(ApplicationRepository applicationRepository, Curator curator, FlagSource flagSource, - Instant now, Duration interval) { - super(null, interval, now, new JobControl(new JobControlFlags(curator, flagSource)), + Instant now, Duration interval, boolean useLock) { + super(null, interval, now, new JobControl(new JobControlFlags(curator, flagSource, useLock)), new ConfigServerJobMetrics(applicationRepository.metric()), cluster(curator), false); this.applicationRepository = applicationRepository; } @@ -59,13 +59,15 @@ public abstract class ConfigServerMaintainer extends Maintainer { private static final Path root = Path.fromString("/configserver/v1/"); private static final Path lockRoot = root.append("locks"); - private final Curator curator; + private final Curator curator; private final ListFlag<String> inactiveJobsFlag; + private final boolean useLock; - public JobControlFlags(Curator curator, FlagSource flagSource) { + public JobControlFlags(Curator curator, FlagSource flagSource, boolean useLock) { this.curator = curator; this.inactiveJobsFlag = PermanentFlags.INACTIVE_MAINTENANCE_JOBS.bindTo(flagSource); + this.useLock = useLock; } @Override @@ -75,7 +77,9 @@ public abstract class ConfigServerMaintainer extends Maintainer { @Override public Mutex lockMaintenanceJob(String job) { - return curator.lock(lockRoot.append(job), Duration.ofSeconds(1)); + return (useLock) + ? curator.lock(lockRoot.append(job), Duration.ofSeconds(1)) + : () -> { }; } } |