diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2022-02-14 11:24:06 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2022-02-14 11:24:06 +0100 |
commit | 085159acafcef3dc4c5c7712b529b627b6678fe5 (patch) | |
tree | e3b1cd2e573dae1f379bb7526573d7a18f4fd60b /controller-server | |
parent | 017caeefc9c5b96dcef1ef2da8b2c09f20753f9f (diff) |
GC unused arg, avoid recomputing completedAt
Diffstat (limited to 'controller-server')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java | 16 |
1 files changed, 9 insertions, 7 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 7f7449fb38b..04c3a14926e 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 @@ -313,7 +313,7 @@ public class DeploymentStatus { if (job.application().instance().equals(instance) && job.type().isProduction()) { List<Job> toRun = new ArrayList<>(); - List<Change> changes = changes(job, step, change, deployment); + List<Change> changes = changes(job, step, change); if (changes.isEmpty()) return; for (Change partial : changes) { toRun.add(new Job(Versions.from(partial, application, deployment, systemVersion), @@ -340,7 +340,7 @@ public class DeploymentStatus { } /** Changes to deploy with the given job, possibly split in two steps. */ - private List<Change> changes(JobId job, StepStatus step, Change change, Optional<Deployment> deployment) { + private List<Change> changes(JobId job, StepStatus step, Change change) { // Signal strict completion criterion by depending on job itself. if (step.completedAt(change, Optional.of(job)).isPresent()) return List.of(); @@ -603,11 +603,13 @@ public class DeploymentStatus { /** The time at which all dependencies completed on the given change and / or versions. */ Optional<Instant> dependenciesCompletedAt(Change change, Optional<JobId> dependent) { - return dependencies.stream().allMatch(step -> step.completedAt(change, dependent).isPresent()) - ? dependencies.stream().map(step -> step.completedAt(change, dependent).get()) - .max(naturalOrder()) - .or(() -> Optional.of(Instant.EPOCH)) - : Optional.empty(); + Instant latest = Instant.EPOCH; + for (StepStatus step : dependencies) { + Optional<Instant> completedAt = step.completedAt(change, dependent); + if (completedAt.isEmpty()) return Optional.empty(); + latest = latest.isBefore(completedAt.get()) ? completedAt.get() : latest; + } + return Optional.of(latest); } /** The time until which this step is blocked by a change blocker. */ |