diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2022-02-28 15:00:53 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2022-02-28 15:00:53 +0100 |
commit | 5f8948ee7bdef69a3d5d4c113e35ed5f4044dd72 (patch) | |
tree | e4e705b7e532f3724a0debfee23d50638e322c2d /controller-server/src/main/java/com/yahoo | |
parent | e21e1a8b0ec33137e10d7984243260a5b792a01f (diff) |
Avoid failing to trigger staging test when system test is already running
Diffstat (limited to 'controller-server/src/main/java/com/yahoo')
2 files changed, 9 insertions, 4 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 20fa539c820..9f2ad0bd41c 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 @@ -39,6 +39,7 @@ import java.util.stream.Collectors; import static java.util.Comparator.comparing; import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toMap; /** * Responsible for scheduling deployment jobs in a build system and keeping @@ -200,9 +201,14 @@ public class DeploymentTrigger { DeploymentStatus status = jobs.deploymentStatus(application); Versions versions = Versions.from(instance.change(), application, status.deploymentFor(job), controller.readSystemVersion()); DeploymentStatus.Job toTrigger = new DeploymentStatus.Job(job.type(), versions, Optional.of(controller.clock().instant()), instance.change()); - Map<JobId, List<DeploymentStatus.Job>> jobs = status.testJobs(Map.of(job, List.of(toTrigger))); - if (jobs.isEmpty() || ! requireTests) - jobs = Map.of(job, List.of(toTrigger)); + Map<JobId, List<DeploymentStatus.Job>> testJobs = status.testJobs(Map.of(job, List.of(toTrigger))); + + Map<JobId, List<DeploymentStatus.Job>> jobs = testJobs.isEmpty() || ! requireTests + ? Map.of(job, List.of(toTrigger)) + : testJobs.entrySet().stream() + .filter(entry -> controller.jobController().last(entry.getKey()).map(Run::hasEnded).orElse(true)) + .collect(toMap(Map.Entry::getKey, Map.Entry::getValue)); + jobs.forEach((jobId, versionsList) -> { trigger(deploymentJob(instance, versionsList.get(0).versions(), jobId.type(), status.jobs().get(jobId).get(), clock.instant())); }); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java index 13c5f978298..11db0f7e3c2 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java @@ -1858,7 +1858,6 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { /** Trigger deployment of the given Vespa version if a valid one is given, e.g., "7.8.9". */ private HttpResponse deployPlatform(String tenantName, String applicationName, String instanceName, boolean pin, HttpRequest request) { - String versionString = readToString(request.getData()); ApplicationId id = ApplicationId.from(tenantName, applicationName, instanceName); StringBuilder response = new StringBuilder(); |