diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2018-05-28 16:35:06 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2018-05-28 16:35:06 +0200 |
commit | 3586bd9b5dae8360da8b420fd731a9deadf0d2d8 (patch) | |
tree | 6bdda8a569854a23ab995f6686821ec4d3a6466c /controller-server | |
parent | 7ff8489a90a5701361d7de5efe7f60bb8a7dd834 (diff) |
Ignore removed job types
Diffstat (limited to 'controller-server')
2 files changed, 15 insertions, 7 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java index 49498786bb8..d3193fd486d 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java @@ -180,10 +180,15 @@ public class DeploymentJobs { return zone(system).map(ZoneId::region); } - public static JobType fromJobName(String jobName) { + public static Optional<JobType> fromOptionalJobName(String jobName) { return Stream.of(values()) .filter(jobType -> jobType.jobName.equals(jobName)) - .findAny().orElseThrow(() -> new IllegalArgumentException("Unknown job name '" + jobName + "'")); + .findAny(); + } + + public static JobType fromJobName(String jobName) { + return fromOptionalJobName(jobName) + .orElseThrow(() -> new IllegalArgumentException("Unknown job name '" + jobName + "'")); } /** Returns the job type for the given zone */ diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java index 531078b7eca..21eea21ba68 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java @@ -382,22 +382,25 @@ public class ApplicationSerializer { private List<JobStatus> jobStatusListFromSlime(Inspector array) { List<JobStatus> jobStatusList = new ArrayList<>(); - array.traverse((ArrayTraverser) (int i, Inspector item) -> jobStatusList.add(jobStatusFromSlime(item))); + array.traverse((ArrayTraverser) (int i, Inspector item) -> jobStatusFromSlime(item).ifPresent(jobStatusList::add)); return jobStatusList; } - private JobStatus jobStatusFromSlime(Inspector object) { - DeploymentJobs.JobType jobType = DeploymentJobs.JobType.fromJobName(object.field(jobTypeField).asString()); + private Optional<JobStatus> jobStatusFromSlime(Inspector object) { + // if the job type has since been removed, ignore it + Optional<DeploymentJobs.JobType> jobType = + DeploymentJobs.JobType.fromOptionalJobName(object.field(jobTypeField).asString()); + if (! jobType.isPresent()) return Optional.empty(); Optional<JobError> jobError = Optional.empty(); if (object.field(errorField).valid()) jobError = Optional.of(JobError.valueOf(object.field(errorField).asString())); - return new JobStatus(jobType, jobError, + return Optional.of(new JobStatus(jobType.get(), jobError, jobRunFromSlime(object.field(lastTriggeredField)), jobRunFromSlime(object.field(lastCompletedField)), jobRunFromSlime(object.field(firstFailingField)), - jobRunFromSlime(object.field(lastSuccessField))); + jobRunFromSlime(object.field(lastSuccessField)))); } private Optional<JobStatus.JobRun> jobRunFromSlime(Inspector object) { |