diff --git a/core/src/main/java/io/kestra/core/services/ExecutionService.java b/core/src/main/java/io/kestra/core/services/ExecutionService.java index 9faea061335..48f047c3208 100644 --- a/core/src/main/java/io/kestra/core/services/ExecutionService.java +++ b/core/src/main/java/io/kestra/core/services/ExecutionService.java @@ -317,7 +317,7 @@ private Execution markAs(final Execution execution, Flow flow, String taskRunId, taskRun -> taskRun.getId().equals(taskRunId) ); - Execution newExecution = execution; + Execution newExecution = execution.withMetadata(execution.getMetadata().nextAttempt()); for (String s : taskRunToRestart) { TaskRun originalTaskRun = newExecution.findTaskRunByTaskRunId(s); diff --git a/core/src/test/java/io/kestra/core/runners/ExecutionServiceTest.java b/core/src/test/java/io/kestra/core/runners/ExecutionServiceTest.java index ae7f82b523e..960ad8f772a 100644 --- a/core/src/test/java/io/kestra/core/runners/ExecutionServiceTest.java +++ b/core/src/test/java/io/kestra/core/runners/ExecutionServiceTest.java @@ -322,6 +322,7 @@ void markAsEachPara() throws Exception { Execution restart = executionService.markAs(execution, flow, execution.findTaskRunByTaskIdAndValue("2-1_seq", List.of("value 1")).getId(), State.Type.FAILED); assertThat(restart.getState().getCurrent(), is(State.Type.RESTARTED)); + assertThat(restart.getMetadata().getAttemptNumber(), is(2)); assertThat(restart.getState().getHistories(), hasSize(4)); assertThat(restart.getTaskRunList(), hasSize(11)); assertThat(restart.findTaskRunByTaskIdAndValue("1_each", List.of()).getState().getCurrent(), is(State.Type.RUNNING)); diff --git a/webserver/src/main/java/io/kestra/webserver/controllers/api/ExecutionController.java b/webserver/src/main/java/io/kestra/webserver/controllers/api/ExecutionController.java index 91075e7e6c9..33777dbe6cf 100644 --- a/webserver/src/main/java/io/kestra/webserver/controllers/api/ExecutionController.java +++ b/webserver/src/main/java/io/kestra/webserver/controllers/api/ExecutionController.java @@ -946,6 +946,11 @@ public Execution changeState( Flow flow = flowRepository.findByExecution(execution.get()); Execution replay = executionService.markAs(execution.get(), flow, stateRequest.getTaskRunId(), stateRequest.getState()); + List