Skip to content

Commit 2f4a602

Browse files
committed
[Fix #484] Removing SortedArrayList
Maybe for larger list that has to be kept sorte that one is useful, but in this case is faster to add everything unsorted (all insertions are really fast) and then sort (there is only one sort of a small amount of items) Signed-off-by: Francisco Javier Tirado Sarti <[email protected]>
1 parent 74fc958 commit 2f4a602

File tree

4 files changed

+33
-162
lines changed

4 files changed

+33
-162
lines changed

impl/core/src/main/java/io/serverlessworkflow/impl/TaskContext.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,6 @@ public TaskContext(JsonNode input, WorkflowPosition position) {
4141
this(input, null, position, Instant.now(), input, input, input, null, new HashMap<>());
4242
}
4343

44-
public TaskContext<T> copy() {
45-
return new TaskContext<T>(
46-
rawInput,
47-
task,
48-
position.copy(),
49-
startedAt,
50-
input,
51-
output,
52-
rawOutput,
53-
flowDirective,
54-
new HashMap<>(contextVariables));
55-
}
56-
5744
public TaskContext(JsonNode input, TaskContext<?> taskContext, T task) {
5845
this(
5946
input,
@@ -88,6 +75,19 @@ private TaskContext(
8875
this.contextVariables = contextVariables;
8976
}
9077

78+
public TaskContext<T> copy() {
79+
return new TaskContext<T>(
80+
rawInput,
81+
task,
82+
position.copy(),
83+
startedAt,
84+
input,
85+
output,
86+
rawOutput,
87+
flowDirective,
88+
new HashMap<>(contextVariables));
89+
}
90+
9191
public void input(JsonNode input) {
9292
this.input = input;
9393
this.rawOutput = input;

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

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,17 @@
2424
import io.serverlessworkflow.impl.WorkflowDefinition;
2525
import io.serverlessworkflow.impl.WorkflowState;
2626
import io.serverlessworkflow.impl.WorkflowUtils;
27-
import io.serverlessworkflow.impl.generic.SortedArrayList;
2827
import io.serverlessworkflow.impl.json.JsonUtils;
2928
import java.lang.reflect.UndeclaredThrowableException;
29+
import java.util.ArrayList;
3030
import java.util.HashMap;
3131
import java.util.List;
3232
import java.util.Map;
3333
import java.util.concurrent.ExecutionException;
3434
import java.util.concurrent.ExecutorService;
3535
import java.util.concurrent.Future;
3636
import java.util.stream.Collectors;
37+
import java.util.stream.Stream;
3738
import org.slf4j.Logger;
3839
import org.slf4j.LoggerFactory;
3940

@@ -62,10 +63,7 @@ protected void internalExecute(WorkflowContext workflow, TaskContext<ForkTask> t
6263
item.getName(),
6364
service.submit(() -> executeBranch(workflow, taskContext.copy(), item, i)));
6465
}
65-
List<BranchContext> results =
66-
new SortedArrayList<>(
67-
(arg1, arg2) ->
68-
arg1.taskContext.completedAt().compareTo(arg2.taskContext.completedAt()));
66+
List<BranchContext> results = new ArrayList<>();
6967
for (Map.Entry<String, Future<TaskContext<?>>> entry : futures.entrySet()) {
7068
try {
7169
results.add(new BranchContext(entry.getKey(), entry.getValue().get()));
@@ -83,19 +81,23 @@ protected void internalExecute(WorkflowContext workflow, TaskContext<ForkTask> t
8381
ex);
8482
}
8583
}
86-
if (!results.isEmpty()) {
87-
taskContext.rawOutput(
88-
forkConfig.isCompete()
89-
? results.get(0).taskContext().output()
90-
: JsonUtils.fromValue(
91-
results.stream()
92-
.map(
93-
e ->
94-
JsonUtils.mapper()
95-
.createObjectNode()
96-
.set(e.taskName(), e.taskContext().output()))
97-
.collect(Collectors.toList())));
98-
}
84+
85+
Stream<BranchContext> sortedStream =
86+
results.stream()
87+
.sorted(
88+
(arg1, arg2) ->
89+
arg1.taskContext.completedAt().compareTo(arg2.taskContext.completedAt()));
90+
taskContext.rawOutput(
91+
forkConfig.isCompete()
92+
? sortedStream.map(e -> e.taskContext().output()).findFirst().orElseThrow()
93+
: JsonUtils.fromValue(
94+
sortedStream
95+
.map(
96+
e ->
97+
JsonUtils.mapper()
98+
.createObjectNode()
99+
.set(e.taskName(), e.taskContext().output()))
100+
.collect(Collectors.toList())));
99101
}
100102
}
101103

impl/core/src/main/java/io/serverlessworkflow/impl/generic/SortedArrayList.java

Lines changed: 0 additions & 67 deletions
This file was deleted.

impl/core/src/test/java/io/serverlessworkflow/impl/SortedListTest.java

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)