diff --git a/orca-core/src/main/java/com/netflix/spinnaker/orca/pipeline/model/Execution.java b/orca-core/src/main/java/com/netflix/spinnaker/orca/pipeline/model/Execution.java index c057c8ca6a..eb29710b63 100644 --- a/orca-core/src/main/java/com/netflix/spinnaker/orca/pipeline/model/Execution.java +++ b/orca-core/src/main/java/com/netflix/spinnaker/orca/pipeline/model/Execution.java @@ -16,10 +16,6 @@ package com.netflix.spinnaker.orca.pipeline.model; -import java.io.Serializable; -import java.util.*; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonManagedReference; @@ -28,6 +24,12 @@ import com.netflix.spinnaker.orca.ExecutionStatus; import com.netflix.spinnaker.security.AuthenticatedRequest; import com.netflix.spinnaker.security.User; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.io.Serializable; +import java.util.*; + import static com.netflix.spinnaker.orca.ExecutionStatus.NOT_STARTED; import static com.netflix.spinnaker.orca.pipeline.model.Execution.ExecutionType.ORCHESTRATION; import static com.netflix.spinnaker.orca.pipeline.model.Execution.ExecutionType.PIPELINE; @@ -37,6 +39,8 @@ public class Execution implements Serializable { + public static final DefaultTrigger NO_TRIGGER = new DefaultTrigger("none"); + public Execution(ExecutionType type, String application) { this(type, UUID.randomUUID().toString(), application); } @@ -229,7 +233,7 @@ public void setOrigin(@Nullable String origin) { this.origin = origin; } - private Trigger trigger = null; + private Trigger trigger = NO_TRIGGER; public @Nonnull Trigger getTrigger() { return trigger; diff --git a/orca-core/src/main/java/com/netflix/spinnaker/orca/pipeline/persistence/jedis/JedisExecutionRepository.java b/orca-core/src/main/java/com/netflix/spinnaker/orca/pipeline/persistence/jedis/JedisExecutionRepository.java index 3a8f1d4d37..77d5e6743f 100644 --- a/orca-core/src/main/java/com/netflix/spinnaker/orca/pipeline/persistence/jedis/JedisExecutionRepository.java +++ b/orca-core/src/main/java/com/netflix/spinnaker/orca/pipeline/persistence/jedis/JedisExecutionRepository.java @@ -56,6 +56,7 @@ import static com.google.common.collect.Maps.filterValues; import static com.netflix.spinnaker.orca.pipeline.model.Execution.ExecutionType.ORCHESTRATION; import static com.netflix.spinnaker.orca.pipeline.model.Execution.ExecutionType.PIPELINE; +import static com.netflix.spinnaker.orca.pipeline.model.Execution.NO_TRIGGER; import static com.netflix.spinnaker.orca.pipeline.model.SyntheticStageOwner.STAGE_BEFORE; import static java.lang.String.format; import static java.lang.System.currentTimeMillis; @@ -504,7 +505,7 @@ private Execution retrieveInternal(RedisClientDelegate redisClientDelegate, Exec } execution.setKeepWaitingPipelines(Boolean.parseBoolean(map.get("keepWaitingPipelines"))); execution.setOrigin(map.get("origin")); - execution.setTrigger(mapper.readValue(map.get("trigger"), Trigger.class)); + execution.setTrigger(map.get("trigger") != null ? mapper.readValue(map.get("trigger"), Trigger.class) : NO_TRIGGER); } catch (Exception e) { throw new ExecutionSerializationException("Failed serializing execution json", e); }