diff options
author | jonmv <venstad@gmail.com> | 2022-06-28 09:25:28 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-06-28 09:25:28 +0200 |
commit | e708fd50fdc5e213267e1da9febd3ece8da3c7de (patch) | |
tree | bd2888ae22fabfd8596345dc4e7a72e7d29a0b92 | |
parent | d17974c4f3d646b835a489e68bcf30081457e7f7 (diff) |
Correctly compare run and expected cloud
2 files changed, 8 insertions, 5 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java index 3ecf350b0b5..079383dd808 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java @@ -57,8 +57,9 @@ public final class JobType implements Comparable<JobType> { if (cloud == null || candidates.in(cloud).zones().isEmpty()) cloud = zones.systemZone().getCloudName(); - return candidates.in(cloud).zones().stream().map(zone -> deploymentTo(zone.getId())) - .findFirst().orElseThrow(() -> new IllegalArgumentException("no zones in " + environment + " among " + + return candidates.in(cloud).zones().stream().findFirst() + .map(zone -> deploymentTo(zone.getId())) + .orElseThrow(() -> new IllegalArgumentException("no zones in " + environment + " among " + zones.zones().controllerUpgraded().zones())); } 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 ba54793a891..9f93033a1a2 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 @@ -382,8 +382,8 @@ public class DeploymentStatus { .filter(run -> run.versions().equals(versions)) .findFirst()) .map(Run::start); - Optional<Instant> systemTestedAt = testedAt(job.application(), systemTest(null), versions); - Optional<Instant> stagingTestedAt = testedAt(job.application(), stagingTest(null), versions); + Optional<Instant> systemTestedAt = testedAt(job.application(), systemTest(job.type()), versions); + Optional<Instant> stagingTestedAt = testedAt(job.application(), stagingTest(job.type()), versions); if (systemTestedAt.isEmpty() || stagingTestedAt.isEmpty()) return triggeredAt; Optional<Instant> testedAt = systemTestedAt.get().isAfter(stagingTestedAt.get()) ? systemTestedAt : stagingTestedAt; return triggeredAt.isPresent() && triggeredAt.get().isBefore(testedAt.get()) ? triggeredAt : testedAt; @@ -990,6 +990,8 @@ public class DeploymentStatus { return new JobStepStatus(StepType.test, step, dependencies, job, status) { @Override Optional<Instant> completedAt(Change change, Optional<JobId> dependent) { + Optional<ZoneId> requiredTestZone = dependent.map(dep -> job.id().type().isSystemTest() ? status.systemTest(dep.type()).zone() + : status.stagingTest(dep.type()).zone()); return RunList.from(job) .matching(run -> dependent.flatMap(status::deploymentFor) .map(deployment -> run.versions().targetsMatch(Versions.from(change, @@ -999,7 +1001,7 @@ public class DeploymentStatus { .orElseGet(() -> (change.platform().isEmpty() || change.platform().get().equals(run.versions().targetPlatform())) && (change.revision().isEmpty() || change.revision().get().equals(run.versions().targetRevision())))) .matching(Run::hasSucceeded) - .matching(run -> dependent.isEmpty() || status.findCloud(dependent.get().type()).equals(status.findCloud(run.id().type()))) + .matching(run -> requiredTestZone.isEmpty() || requiredTestZone.get().equals(run.id().type().zone())) .asList().stream() .map(run -> run.end().get()) .max(naturalOrder()); |