diff --git a/orca-queue-tck/src/main/kotlin/com/netflix/spinnaker/orca/q/QueueIntegrationTest.kt b/orca-queue-tck/src/main/kotlin/com/netflix/spinnaker/orca/q/QueueIntegrationTest.kt index 750fb3b59f..db243c66c7 100644 --- a/orca-queue-tck/src/main/kotlin/com/netflix/spinnaker/orca/q/QueueIntegrationTest.kt +++ b/orca-queue-tck/src/main/kotlin/com/netflix/spinnaker/orca/q/QueueIntegrationTest.kt @@ -574,7 +574,7 @@ abstract class QueueIntegrationTest { repository.retrieve(PIPELINE, pipeline.id).apply { assertThat(status).isEqualTo(SUCCEEDED) assertThat(stages.size).isEqualTo(2) - assertThat(stages.first().type).isEqualTo(RestrictExecutionDuringTimeWindow.TYPE) + assertThat(stages.map { it.type }).contains(RestrictExecutionDuringTimeWindow.TYPE) assertThat(stages.map { it.status }).allMatch { it == SUCCEEDED } } } @@ -612,9 +612,12 @@ abstract class QueueIntegrationTest { assertSoftly { assertThat(status).isEqualTo(SUCCEEDED) assertThat(stages.size).isEqualTo(5) - assertThat(stages.first().type).isEqualTo(RestrictExecutionDuringTimeWindow.TYPE) - assertThat(stages[1..3].map { it.type }).allMatch { it == "dummy" } - assertThat(stages.last().type).isEqualTo("parallel") + assertThat(stages.map { it.type }).containsExactlyInAnyOrder( + RestrictExecutionDuringTimeWindow.TYPE, + "dummy", + "dummy", + "dummy", + "parallel") assertThat(stages.map { it.status }).allMatch { it == SUCCEEDED } } } diff --git a/orca-sql/src/main/kotlin/com/netflix/spinnaker/orca/sql/pipeline/persistence/ExecutionMapper.kt b/orca-sql/src/main/kotlin/com/netflix/spinnaker/orca/sql/pipeline/persistence/ExecutionMapper.kt index 78b9c694ed..8cbdf9a970 100644 --- a/orca-sql/src/main/kotlin/com/netflix/spinnaker/orca/sql/pipeline/persistence/ExecutionMapper.kt +++ b/orca-sql/src/main/kotlin/com/netflix/spinnaker/orca/sql/pipeline/persistence/ExecutionMapper.kt @@ -19,8 +19,6 @@ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.readValue import com.netflix.spinnaker.orca.pipeline.model.Execution import com.netflix.spinnaker.orca.pipeline.model.Stage -import com.netflix.spinnaker.orca.pipeline.model.SyntheticStageOwner.STAGE_AFTER -import com.netflix.spinnaker.orca.pipeline.model.SyntheticStageOwner.STAGE_BEFORE import org.jooq.DSLContext import org.slf4j.LoggerFactory import java.sql.ResultSet @@ -77,24 +75,7 @@ class ExecutionMapper( } executions.forEach { execution -> - val stages = mutableListOf() - - stages.addAll( - execution.stages.filter { it.parentStageId == null } - .sortedBy { it.refId } - ) - - execution.stages.filter { it.parentStageId != null } - .sortedBy { it.refId } - .forEach { - when (it.syntheticStageOwner) { - STAGE_BEFORE -> stages.add(stages.indexOf(it.parent), it) - STAGE_AFTER -> stages.add(stages.indexOf(it.parent) + 1, it) - } - } - - execution.stages.clear() - execution.stages.addAll(stages) + execution.stages.sortBy { it.refId } } } }