aboutsummaryrefslogtreecommitdiffstats
path: root/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2021-11-04 12:26:46 +0100
committerHarald Musum <musum@yahooinc.com>2021-11-04 12:26:46 +0100
commite54f5c093d208d3f6031ff10e7804f6b380951ec (patch)
tree6696833b91e8312ec83bcb66e360519aa8b844ad /configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java
parent8e165140c2726e4434e56a032aeadd012943dca6 (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.java14
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))
+ : () -> { };
}
}