Skip to content

Commit 8b39665

Browse files
authored
[Improvement]: improve batching logic (#180)
* adjust batching logic * add more comments * remove custom checkpoitn setting
1 parent a95b358 commit 8b39665

9 files changed

Lines changed: 513 additions & 401 deletions

File tree

examples/src/main/java/software/amazon/lambda/durable/examples/ManyAsyncStepsExample.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import java.time.Duration;
66
import java.util.ArrayList;
7-
import software.amazon.lambda.durable.DurableConfig;
7+
import java.util.concurrent.TimeUnit;
88
import software.amazon.lambda.durable.DurableContext;
99
import software.amazon.lambda.durable.DurableFuture;
1010
import software.amazon.lambda.durable.DurableHandler;
@@ -28,7 +28,7 @@ public record Input(int multiplier) {}
2828

2929
@Override
3030
public String handleRequest(Input input, DurableContext context) {
31-
var startTime = System.currentTimeMillis();
31+
var startTime = System.nanoTime();
3232
var multiplier = input.multiplier() > 0 ? input.multiplier() : 1;
3333

3434
context.getLogger().info("Starting {} async steps with multiplier {}", STEP_COUNT, multiplier);
@@ -47,20 +47,19 @@ public String handleRequest(Input input, DurableContext context) {
4747
var results = DurableFuture.allOf(futures);
4848
var totalSum = results.stream().mapToInt(Integer::intValue).sum();
4949

50-
var executionTimeMs = System.currentTimeMillis() - startTime;
50+
// checkpoint the executionTime so that we can have the same value when replay
51+
var executionTimeMs = context.step(
52+
"execution-time", Long.class, stepCtx -> TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime));
5153
context.getLogger()
5254
.info("Completed {} steps, total sum: {}, execution time: {}ms", STEP_COUNT, totalSum, executionTimeMs);
5355

5456
// Wait 10 seconds to test replay
5557
context.wait("post-compute-wait", Duration.ofSeconds(10));
5658

57-
return String.format(
58-
"Completed %d async steps. Sum: %d, Replay Time: %dms", STEP_COUNT, totalSum, executionTimeMs);
59-
}
59+
var replayTimeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);
6060

61-
@Override
62-
protected DurableConfig createConfiguration() {
63-
// add a small checkpoint delay to allow checkpoint batching
64-
return DurableConfig.builder().withCheckpointDelay(Duration.ofMillis(1)).build();
61+
return String.format(
62+
"Completed %d async steps. Sum: %d, Execution Time: %dms, Replay Time: %dms",
63+
STEP_COUNT, totalSum, executionTimeMs, replayTimeMs);
6564
}
6665
}

sdk/src/main/java/software/amazon/lambda/durable/execution/ApiRequestBatcher.java

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

0 commit comments

Comments
 (0)