diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-05-03 09:53:53 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2018-05-03 09:53:53 +0200 |
commit | 31a4be3bb9c66a797e051e5e44f9bb956c2825e8 (patch) | |
tree | 32197c613f5ae34b841a9dc410c9cfa83db2c55b /controller-server | |
parent | 557cbfd070cb90660520f3a1afc78f81ec029235 (diff) |
Avoid unnecessary Optional (un)wrapping
Diffstat (limited to 'controller-server')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java | 17 |
1 files changed, 9 insertions, 8 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 8beed6794f4..f280267478e 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 @@ -26,6 +26,7 @@ import java.time.Clock; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; +import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.Map; @@ -276,14 +277,14 @@ public class DeploymentTrigger { application.deploymentJobs().statusOf(stagingTest) .<Instant>flatMap(job -> job.lastSuccess().map(JobRun::at))); String reason = "New change available"; - List<Job> testJobs = null; + List<Job> testJobs = Collections.emptyList(); if (change.isPresent()) for (Step step : productionSteps) { Set<JobType> stepJobs = step.zones().stream().map(order::toJob).collect(toSet()); - Map<Optional<Instant>, List<JobType>> jobsByCompletion = stepJobs.stream().collect(groupingBy(job -> completedAt(change, application, job))); - if (jobsByCompletion.containsKey(empty())) { // Step not complete, because some jobs remain -- trigger these if the previous step was done, or theirs tests if needed. - for (JobType job : jobsByCompletion.get(empty())) { + Map<Instant, List<JobType>> jobsByCompletion = stepJobs.stream().collect(groupingBy(job -> completedAt(change, application, job).orElse(Instant.EPOCH))); + if (jobsByCompletion.containsKey(Instant.EPOCH)) { // Step not complete, because some jobs remain -- trigger these if the previous step was done, or theirs tests if needed. + for (JobType job : jobsByCompletion.get(Instant.EPOCH)) { Versions versions = versionsFor(application, change, deploymentFor(application, job)); if (isTested(application, versions)) { if ( completedAt.isPresent() @@ -291,7 +292,7 @@ public class DeploymentTrigger { && stepJobs.containsAll(runningProductionJobsFor(application))) jobs.add(deploymentJob(application, versions, change, job, reason, completedAt.get())); } - else if (testJobs == null) { + else if (testJobs.isEmpty()) { testJobs = testJobsFor(application, versions, "Testing deployment for " + job.jobName(), completedAt.orElse(clock.instant())); } } @@ -304,12 +305,12 @@ public class DeploymentTrigger { reason += " after a delay of " + delay; } else { - completedAt = jobsByCompletion.keySet().stream().map(Optional::get).max(naturalOrder()); + completedAt = jobsByCompletion.keySet().stream().max(naturalOrder()); reason = "Available change in " + stepJobs.stream().map(JobType::jobName).collect(joining(", ")); } } } - if (testJobs == null) + if (testJobs.isEmpty()) testJobs = testJobsFor(application, versionsFor(application, application.change(), empty()), "Testing last changes outside prod", clock.instant()); jobs.addAll(testJobs); }); @@ -320,7 +321,7 @@ public class DeploymentTrigger { private List<JobType> runningProductionJobsFor(Application application) { return application.deploymentJobs().jobStatus().keySet().parallelStream() - .filter(job -> job.isProduction()) + .filter(JobType::isProduction) .filter(job -> isRunning(application, job)) .collect(toList()); } |