summaryrefslogtreecommitdiffstats
path: root/configserver
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
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')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java14
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainer.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainer.java2
6 files changed, 14 insertions, 12 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
index d83636d08d6..2c0b7e090a6 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
@@ -45,7 +45,7 @@ public class ApplicationPackageMaintainer extends ConfigServerMaintainer {
Curator curator,
Duration interval,
FlagSource flagSource) {
- super(applicationRepository, curator, flagSource, applicationRepository.clock().instant(), interval);
+ super(applicationRepository, curator, flagSource, applicationRepository.clock().instant(), interval, false);
this.applicationRepository = applicationRepository;
this.configserverConfig = applicationRepository.configserverConfig();
this.supervisor = new Supervisor(new Transport("filedistribution-pool")).setDropEmptyBuffers(true);
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))
+ : () -> { };
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java
index df94d1ad6a4..277e6acd6e6 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java
@@ -30,7 +30,7 @@ public class FileDistributionMaintainer extends ConfigServerMaintainer {
Curator curator,
Duration interval,
FlagSource flagSource) {
- super(applicationRepository, curator, flagSource, applicationRepository.clock().instant(), interval);
+ super(applicationRepository, curator, flagSource, applicationRepository.clock().instant(), interval, false);
this.applicationRepository = applicationRepository;
ConfigserverConfig configserverConfig = applicationRepository.configserverConfig();
this.maxUnusedFileReferenceAge = Duration.ofMinutes(configserverConfig.keepUnusedFileReferencesMinutes());
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainer.java
index a6802a65e3c..fb4d7ac1fc1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainer.java
@@ -11,7 +11,6 @@ import com.yahoo.vespa.config.server.application.ConfigConvergenceChecker;
import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.flags.FlagSource;
-import com.yahoo.vespa.model.VespaModel;
import com.yahoo.yolean.Exceptions;
import java.time.Clock;
@@ -21,7 +20,6 @@ import java.util.Collection;
import java.util.Comparator;
import java.util.Map;
import java.util.Optional;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Supplier;
@@ -46,7 +44,7 @@ public class ReindexingMaintainer extends ConfigServerMaintainer {
public ReindexingMaintainer(ApplicationRepository applicationRepository, Curator curator, FlagSource flagSource,
Duration interval, ConfigConvergenceChecker convergence, Clock clock) {
- super(applicationRepository, curator, flagSource, clock.instant(), interval);
+ super(applicationRepository, curator, flagSource, clock.instant(), interval, true);
this.convergence = convergence;
this.clock = clock;
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java
index e0a5e080ff1..062f1ef816e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java
@@ -19,7 +19,7 @@ public class SessionsMaintainer extends ConfigServerMaintainer {
private final boolean hostedVespa;
SessionsMaintainer(ApplicationRepository applicationRepository, Curator curator, Duration interval, FlagSource flagSource) {
- super(applicationRepository, curator, flagSource, applicationRepository.clock().instant(), interval);
+ super(applicationRepository, curator, flagSource, applicationRepository.clock().instant(), interval, true);
this.hostedVespa = applicationRepository.configserverConfig().hostedVespa();
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainer.java
index 049441c3a36..ec09e89568c 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainer.java
@@ -25,7 +25,7 @@ public class TenantsMaintainer extends ConfigServerMaintainer {
TenantsMaintainer(ApplicationRepository applicationRepository, Curator curator, FlagSource flagSource,
Duration interval, Clock clock) {
- super(applicationRepository, curator, flagSource, applicationRepository.clock().instant(), interval);
+ super(applicationRepository, curator, flagSource, applicationRepository.clock().instant(), interval, true);
this.ttlForUnusedTenant = defaultTtlForUnusedTenant;
this.clock = clock;
}