diff options
author | jonmv <venstad@gmail.com> | 2022-10-04 09:33:38 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-10-04 09:33:38 +0200 |
commit | 80cfe313a427ccfe96cb7d3c503b896fbfee3ed3 (patch) | |
tree | 778599ae60cb93b113426ecf27c695d568669b98 | |
parent | f07ab2ab209ca9983046ca488ddf86a765774eea (diff) |
Reset cooldown when targets for test jobs change, irrespective of change
4 files changed, 10 insertions, 11 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java index ddf4dcda7e3..d5a8b44a559 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java @@ -893,7 +893,7 @@ public class DeploymentStatus { return dependenciesCompletedAt(change, dependent) .map(ready -> Stream.of(blockedUntil(change), pausedUntil(), - coolingDownUntil(change)) + coolingDownUntil(change, dependent)) .flatMap(Optional::stream) .reduce(ready, maxBy(naturalOrder()))); } @@ -916,7 +916,7 @@ public class DeploymentStatus { public Optional<Instant> pausedUntil() { return Optional.empty(); } /** The time until which this step is cooling down, due to consecutive failures. */ - public Optional<Instant> coolingDownUntil(Change change) { return Optional.empty(); } + public Optional<Instant> coolingDownUntil(Change change, Optional<JobId> dependent) { return Optional.empty(); } /** Whether this step is declared in the deployment spec, or is an implicit step. */ public boolean isDeclared() { return true; } @@ -1020,13 +1020,13 @@ public class DeploymentStatus { } @Override - public Optional<Instant> coolingDownUntil(Change change) { + public Optional<Instant> coolingDownUntil(Change change, Optional<JobId> dependent) { if (job.lastTriggered().isEmpty()) return Optional.empty(); if (job.lastCompleted().isEmpty()) return Optional.empty(); if (job.firstFailing().isEmpty() || ! job.firstFailing().get().hasEnded()) return Optional.empty(); Versions lastVersions = job.lastCompleted().get().versions(); - if (change.platform().isPresent() && ! change.platform().get().equals(lastVersions.targetPlatform())) return Optional.empty(); - if (change.revision().isPresent() && ! change.revision().get().equals(lastVersions.targetRevision())) return Optional.empty(); + Versions toRun = Versions.from(change, status.application, dependent.flatMap(status::deploymentFor), status.fallbackPlatform(change, job.id())); + if ( ! toRun.targetsMatch(lastVersions)) return Optional.empty(); if (job.id().type().environment().isTest() && job.isNodeAllocationFailure()) return Optional.empty(); Instant firstFailing = job.firstFailing().get().end().get(); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java index 60f65070557..8c601f8c678 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java @@ -277,7 +277,7 @@ class JobControllerApiHandlerHelper { readyAt.filter(controller.clock().instant()::isBefore) .ifPresent(until -> stepObject.setLong("delayedUntil", until.toEpochMilli())); stepStatus.pausedUntil().ifPresent(until -> stepObject.setLong("pausedUntil", until.toEpochMilli())); - stepStatus.coolingDownUntil(change).ifPresent(until -> stepObject.setLong("coolingDownUntil", until.toEpochMilli())); + stepStatus.coolingDownUntil(change, Optional.empty()).ifPresent(until -> stepObject.setLong("coolingDownUntil", until.toEpochMilli())); stepStatus.blockedUntil(Change.of(controller.systemVersion(versionStatus))) // Dummy version — just anything with a platform. .ifPresent(until -> stepObject.setLong("platformBlockedUntil", until.toEpochMilli())); stepStatus.blockedUntil(Change.of(RevisionId.forProduction(1))) // Dummy version — just anything with an application. diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java index 3000c37ad1e..62b48307f37 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java @@ -184,13 +184,13 @@ public class DeploymentApiHandler extends ThreadedHttpRequestHandler { Cursor jobObject = jobsArray.addObject(); jobObject.setString("name", job.type().jobName()); jobStatus.pausedUntil().ifPresent(until -> jobObject.setLong("pausedUntil", until.toEpochMilli())); - jobStatus.coolingDownUntil(status.application().require(instance.instance()).change()) + jobStatus.coolingDownUntil(status.application().require(instance.instance()).change(), Optional.empty()) .ifPresent(until -> jobObject.setLong("coolingDownUntil", until.toEpochMilli())); if (jobsToRun.containsKey(job)) { List<Versions> versionsOnThisPlatform = jobsToRun.get(job).stream() - .map(DeploymentStatus.Job::versions) - .filter(versions -> versions.targetPlatform().equals(statistics.version())) - .collect(Collectors.toList()); + .map(DeploymentStatus.Job::versions) + .filter(versions -> versions.targetPlatform().equals(statistics.version())) + .toList(); if ( ! versionsOnThisPlatform.isEmpty()) jobObject.setString("pending", versionsOnThisPlatform.stream() .allMatch(versions -> versions.sourcePlatform() diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json index df682cf8e1b..6ef57aaed21 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json @@ -270,7 +270,6 @@ "jobs": [ { "name": "system-test", - "coolingDownUntil": 1600000000000, "pending": "application" }, { |