Skip to content

Commit cee2c7e

Browse files
committed
[Fix #1414] Gonzalos comments
1 parent df68b6f commit cee2c7e

2 files changed

Lines changed: 17 additions & 13 deletions

File tree

impl/core/src/main/java/io/serverlessworkflow/impl/executors/TryExecutor.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,15 @@ protected TryExecutorBuilder(
7171
this.errorFilter = buildErrorFilter(catchInfo.getErrors());
7272
this.whenFilter = WorkflowUtils.optionalPredicate(application, catchInfo.getWhen());
7373
this.exceptFilter = WorkflowUtils.optionalPredicate(application, catchInfo.getExceptWhen());
74-
this.taskExecutor =
75-
TaskExecutorHelper.createExecutorList(position, task.getTry(), definition, "try");
7674
TryTaskCatch catchTask = task.getCatch();
7775
if (catchTask != null) {
7876
this.errorVariable = catchTask.getAs();
7977
List<TaskItem> catchTaskDo = catchTask.getDo();
8078
this.catchTaskExecutor =
8179
catchTaskDo != null && !catchTaskDo.isEmpty()
8280
? Optional.of(
83-
TaskExecutorHelper.createExecutorList(position.copy(), catchTaskDo, definition))
81+
TaskExecutorHelper.createExecutorList(
82+
position.copy().addProperty("catch"), catchTaskDo, definition))
8483
: Optional.empty();
8584

8685
Retry retry = catchTask.getRetry();
@@ -89,6 +88,8 @@ protected TryExecutorBuilder(
8988
this.catchTaskExecutor = Optional.empty();
9089
this.retryIntervalExecutor = Optional.empty();
9190
}
91+
this.taskExecutor =
92+
TaskExecutorHelper.createExecutorList(position, task.getTry(), definition, "try");
9293
}
9394

9495
private Optional<RetryExecutor> buildRetryInterval(Retry retry) {

impl/test/src/test/java/io/serverlessworkflow/impl/test/RetryTimeoutTest.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import static org.assertj.core.api.Assertions.assertThatThrownBy;
2121

2222
import com.fasterxml.jackson.databind.JsonNode;
23-
import io.serverlessworkflow.api.types.TryTask;
23+
import io.serverlessworkflow.impl.TaskContextData;
2424
import io.serverlessworkflow.impl.WorkflowApplication;
2525
import io.serverlessworkflow.impl.WorkflowException;
2626
import io.serverlessworkflow.impl.WorkflowModel;
@@ -31,6 +31,7 @@
3131
import java.io.IOException;
3232
import java.time.Duration;
3333
import java.util.Map;
34+
import java.util.Set;
3435
import java.util.concurrent.CompletableFuture;
3536
import java.util.concurrent.ConcurrentHashMap;
3637
import okhttp3.mockwebserver.MockResponse;
@@ -65,17 +66,18 @@ void tearDown() throws IOException {
6566
private class RetryListener implements WorkflowExecutionListener {
6667

6768
private Map<String, Short> taskRetried = new ConcurrentHashMap<>();
68-
private Map<String, Short> tryTaskCompleted = new ConcurrentHashMap<>();
69+
private Map<String, Short> taskCompleted = new ConcurrentHashMap<>();
70+
private Set<String> raiseTaskPos = ConcurrentHashMap.newKeySet();
6971

72+
@Override
7073
public void onTaskRetried(TaskRetriedEvent ev) {
7174
taskRetried.put(ev.taskContext().position().jsonPointer(), ev.taskContext().retryAttempt());
7275
}
7376

77+
@Override
7478
public void onTaskCompleted(TaskCompletedEvent ev) {
75-
if (ev.taskContext().task() instanceof TryTask) {
76-
tryTaskCompleted.put(
77-
ev.taskContext().position().jsonPointer(), ev.taskContext().retryAttempt());
78-
}
79+
TaskContextData taskContext = ev.taskContext();
80+
taskCompleted.put(taskContext.position().jsonPointer(), taskContext.retryAttempt());
7981
}
8082
}
8183

@@ -103,7 +105,6 @@ void testRetry(String path) throws IOException {
103105
.until(() -> future.join().as(JsonNode.class).orElseThrow().equals(result));
104106
assertThat(retryListener.taskRetried).hasSize(1);
105107
assertThat(retryListener.taskRetried.get("do/0/tryGetPet/try/0/getPet")).isEqualTo((short) 2);
106-
assertThat(retryListener.tryTaskCompleted.values()).containsOnly((short) 0);
107108
}
108109

109110
@Test
@@ -136,9 +137,9 @@ void testNestedRetry() throws IOException {
136137
retryListener.taskRetried.get(
137138
"do/0/tryServerError/try/0/tryCommunication/try/0/getPet"))
138139
.isEqualTo((short) 5);
139-
assertThat(retryListener.tryTaskCompleted.get("do/0/tryServerError/try/0/tryCommunication/try"))
140+
assertThat(retryListener.taskCompleted.get("do/0/tryServerError/try/0/tryCommunication/try"))
140141
.isEqualTo((short) 2);
141-
assertThat(retryListener.tryTaskCompleted.get("do/0/tryServerError/try")).isEqualTo((short) 0);
142+
assertThat(retryListener.taskCompleted.get("do/0/tryServerError/try")).isEqualTo((short) 0);
142143
}
143144

144145
@Test
@@ -158,7 +159,9 @@ void testRetryDo() throws IOException {
158159
.orElseThrow()
159160
.equals(Map.of("setAfterFailingTask", "No problem")));
160161

161-
assertThat(retryListener.tryTaskCompleted.get("do/0/attemptTask/try")).isEqualTo((short) 0);
162+
assertThat(retryListener.taskCompleted.get("do/0/attemptTask/try")).isEqualTo((short) 0);
163+
assertThat(retryListener.taskCompleted)
164+
.containsKey("do/0/attemptTask/catch/do/0/executeAfterFailingTask");
162165
}
163166

164167
@Test

0 commit comments

Comments
 (0)