summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-10-27 15:12:20 +0200
committerjonmv <venstad@gmail.com>2022-10-27 15:12:40 +0200
commit5bafc03be986f6edd34b30063c8d33320c240519 (patch)
tree57eccb691b4c37c70bfeb9e8338f44e878fe5de3 /controller-server
parent30a93b4910c1de1a10ebccfa545d03e1deac8056 (diff)
Allow turning off jobs in a zone, optionally per application
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java1
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java9
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java2
3 files changed, 11 insertions, 1 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java
index d5a31a07408..8f0786cb629 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java
@@ -378,6 +378,7 @@ public class DeploymentTrigger {
DeploymentStatus.Job job = jobsList.get(0);
if ( job.readyAt().isPresent()
&& ! clock.instant().isBefore(job.readyAt().get())
+ && ! controller.jobController().isDisabled(jobId)
&& ! (jobId.type().isProduction() && isUnhealthyInAnotherZone(status.application(), jobId))
&& abortIfRunning(status, jobsToRun, jobId)) // Abort and trigger this later if running with outdated parameters.
jobs.add(deploymentJob(status.application().require(jobId.application().instance()),
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
index edddaa5dee7..08cf8d2e1c4 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
@@ -10,6 +10,9 @@ import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.Tags;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.transaction.Mutex;
+import com.yahoo.vespa.flags.FetchVector.Dimension;
+import com.yahoo.vespa.flags.ListFlag;
+import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.ApplicationController;
import com.yahoo.vespa.hosted.controller.Controller;
@@ -118,6 +121,7 @@ public class JobController {
private final BufferedLogStore logs;
private final TesterCloud cloud;
private final JobMetrics metric;
+ private final ListFlag<String> disabledZones;
private final AtomicReference<Consumer<Run>> runner = new AtomicReference<>(__ -> { });
@@ -128,6 +132,7 @@ public class JobController {
this.logs = new BufferedLogStore(curator, controller.serviceRegistry().runDataStore());
this.cloud = controller.serviceRegistry().testerCloud();
this.metric = new JobMetrics(controller.metric());
+ this.disabledZones = PermanentFlags.DISABLED_DEPLOYMENT_ZONES.bindTo(controller.flagSource());
}
public TesterCloud cloud() { return cloud; }
@@ -144,6 +149,10 @@ public class JobController {
}
}
+ public boolean isDisabled(JobId id) {
+ return disabledZones.with(Dimension.APPLICATION_ID, id.application().serializedForm()).value().contains(id.type().zone().value());
+ }
+
/** Returns all entries currently logged for the given run. */
public Optional<RunLog> details(RunId id) {
return details(id, -1);
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
index cd48d6839f3..de1d3ef955d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
@@ -75,7 +75,7 @@ public class JobRunner extends ControllerMaintainer {
}
public void advance(Run run) {
- advance(run.id());
+ if ( ! jobs.isDisabled(run.id().job())) advance(run.id());
}
/** Advances each of the ready steps for the given run, or marks it as finished, and stashes it. Public for testing. */