You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit e00c900
Browse filesBrowse the repository at this point in the historyBrowse files
|`withSerDes()`| Serializer for step results | Jackson with default settings |
36
36
|`withExecutorService()`| Thread pool for user-defined operations | Cached daemon thread pool |
37
+
|`withInvocationExecutorFactory()`| Factory for isolated per-invocation user executors | Disabled |
37
38
|`withLoggerConfig()`| Logger behavior configuration | Suppress logs during replay |
38
39
|`withPollingStrategy()`| Backend polling strategy | Exponential backoff: 1s base, 2x rate, FULL jitter, 10s max |
39
40
|`withCheckpointDelay()`| How often the SDK checkpoints updates |`Duration.ofSeconds(0)` (as soon as possible) |
40
41
41
-
The `withExecutorService()` option configures the thread pool used for running user-defined operations. Internal SDK coordination (checkpoint batching, polling) runs on an SDK-managed thread pool.
42
+
The `withExecutorService()` option configures a caller-owned executor shared by every invocation that uses the configuration. The SDK never shuts it down. To isolate concurrent Lambda Managed Instances invocations, configure a factory instead:
The factory is called once per invocation and may be called concurrently on Lambda Managed Instances. It must return a fresh executor, which the SDK drains and shuts down before returning the invocation response. Returning an executor already leased to an active invocation is rejected. The factory and `withExecutorService()` are mutually exclusive. Both options run all user code, including the root handler, steps, and child contexts. Internal SDK coordination such as checkpoint batching and polling remains on the SDK-managed executor.
51
+
52
+
A bounded executor supplied through `withExecutorService()` remains shared. On Lambda Managed Instances, concurrent roots can occupy all of its workers while waiting for queued steps. Use the invocation factory when capacity must be isolated between native invocations. Isolation does not define the capacity required by arbitrarily nested synchronous child contexts; size or design those separately.
Copy file name to clipboardExpand all lines: docs/design.md
+9-1Lines changed: 9 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -145,6 +145,7 @@ public class MyHandler extends DurableHandler<Input, Output> {
145
145
|`lambdaClientBuilder`| Auto-created `LambdaClient` for current region, primed for performance (see [`DurableConfig.java`](../sdk/src/main/java/software/amazon/lambda/durable/DurableConfig.java)) |
0 commit comments