Skip to content

Commit 1afc771

Browse files
authored
refactor(sdk): use runInChildContext for promise combinators (#435)
Promise Combinator Idle Termination: Allow Lambda termination when promise combinators wait on idle promises. The checkpoint manager now properly detects and handles idle promise states, allowing Lambda termination to proceed normally. Changes: - Updated promise-handler.ts to use runInChildContext instead of step - Removed retry configuration (not needed for runInChildContext) - Updated durable-context.ts to pass runInChildContext to promise getter - Updated all unit tests in promise-handler.test.ts - Fixed integration tests to expect ChildContextError instead of StepError - Regenerated history files for promise and concurrent examples *Issue #, if available:* #433
1 parent c4dff1d commit 1afc771

24 files changed

+873
-948
lines changed

packages/aws-durable-execution-sdk-js-examples/src/examples/concurrent/callback-submitter/concurrent-callback-submitter.history.json

Lines changed: 55 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
{
33
"EventType": "ExecutionStarted",
44
"EventId": 1,
5-
"Id": "78d73735-f746-4ad6-9701-9a22dd29b729",
6-
"EventTimestamp": "2025-12-22T21:51:48.345Z",
5+
"Id": "6061bb79-0070-4af3-848a-2d964bca62fc",
6+
"EventTimestamp": "2026-02-10T18:17:23.806Z",
77
"ExecutionStartedDetails": {
88
"Input": {
99
"Payload": "{}"
@@ -15,7 +15,7 @@
1515
"SubType": "Parallel",
1616
"EventId": 2,
1717
"Id": "c4ca4238a0b92382",
18-
"EventTimestamp": "2025-12-22T21:51:48.352Z",
18+
"EventTimestamp": "2026-02-10T18:17:23.811Z",
1919
"ContextStartedDetails": {}
2020
},
2121
{
@@ -24,7 +24,7 @@
2424
"EventId": 3,
2525
"Id": "ea66c06c1e1c05fa",
2626
"Name": "parallel-branch-0",
27-
"EventTimestamp": "2025-12-22T21:51:48.352Z",
27+
"EventTimestamp": "2026-02-10T18:17:23.811Z",
2828
"ParentId": "c4ca4238a0b92382",
2929
"ContextStartedDetails": {}
3030
},
@@ -34,7 +34,7 @@
3434
"EventId": 4,
3535
"Id": "2f221a18eb863803",
3636
"Name": "wait-for-callback-1",
37-
"EventTimestamp": "2025-12-22T21:51:48.352Z",
37+
"EventTimestamp": "2026-02-10T18:17:23.811Z",
3838
"ParentId": "ea66c06c1e1c05fa",
3939
"ContextStartedDetails": {}
4040
},
@@ -43,10 +43,10 @@
4343
"SubType": "Callback",
4444
"EventId": 5,
4545
"Id": "55998bab939d40e7",
46-
"EventTimestamp": "2025-12-22T21:51:48.352Z",
46+
"EventTimestamp": "2026-02-10T18:17:23.811Z",
4747
"ParentId": "2f221a18eb863803",
4848
"CallbackStartedDetails": {
49-
"CallbackId": "eyJleGVjdXRpb25JZCI6ImQxMjQ1YmFlLTVlZTgtNGE2Yi1iNTEyLThjZDVmNTg5YmJiYiIsIm9wZXJhdGlvbklkIjoiNTU5OThiYWI5MzlkNDBlNyIsInRva2VuIjoiYzViMGUxOTgtNjZiOC00ZWFkLWFkYTItZjEwZmU3NWI3NTI4In0=",
49+
"CallbackId": "eyJleGVjdXRpb25JZCI6IjEyYTI2MmUwLTk3MDMtNGQ0Mi05MGJmLWU1N2M4ZWI1N2RjOCIsIm9wZXJhdGlvbklkIjoiNTU5OThiYWI5MzlkNDBlNyIsInRva2VuIjoiZjg5YmRhNDctYTljMC00ZTA3LWE0NDctNjZlOTFkNmQ5YWE1In0=",
5050
"Input": {}
5151
}
5252
},
@@ -56,7 +56,7 @@
5656
"EventId": 6,
5757
"Id": "98c6f2c2287f4c73",
5858
"Name": "parallel-branch-1",
59-
"EventTimestamp": "2025-12-22T21:51:48.352Z",
59+
"EventTimestamp": "2026-02-10T18:17:23.811Z",
6060
"ParentId": "c4ca4238a0b92382",
6161
"ContextStartedDetails": {}
6262
},
@@ -66,7 +66,7 @@
6666
"EventId": 7,
6767
"Id": "6151f5ab282d90e4",
6868
"Name": "wait-for-callback-2",
69-
"EventTimestamp": "2025-12-22T21:51:48.352Z",
69+
"EventTimestamp": "2026-02-10T18:17:23.811Z",
7070
"ParentId": "98c6f2c2287f4c73",
7171
"ContextStartedDetails": {}
7272
},
@@ -75,76 +75,76 @@
7575
"SubType": "Callback",
7676
"EventId": 8,
7777
"Id": "361fe970d1e192e9",
78-
"EventTimestamp": "2025-12-22T21:51:48.352Z",
78+
"EventTimestamp": "2026-02-10T18:17:23.811Z",
7979
"ParentId": "6151f5ab282d90e4",
8080
"CallbackStartedDetails": {
81-
"CallbackId": "eyJleGVjdXRpb25JZCI6ImQxMjQ1YmFlLTVlZTgtNGE2Yi1iNTEyLThjZDVmNTg5YmJiYiIsIm9wZXJhdGlvbklkIjoiMzYxZmU5NzBkMWUxOTJlOSIsInRva2VuIjoiM2ZhZjljMzUtY2NmMS00MzdhLWI0N2QtZmUzNTA2ZTBkNDJiIn0=",
81+
"CallbackId": "eyJleGVjdXRpb25JZCI6IjEyYTI2MmUwLTk3MDMtNGQ0Mi05MGJmLWU1N2M4ZWI1N2RjOCIsIm9wZXJhdGlvbklkIjoiMzYxZmU5NzBkMWUxOTJlOSIsInRva2VuIjoiOWZiZWE1MzgtNWM5OS00NTQ1LTkzNDItMDYwZDc1ZDEyYzI3In0=",
8282
"Input": {}
8383
}
8484
},
85-
{
86-
"EventType": "CallbackSucceeded",
87-
"SubType": "Callback",
88-
"EventId": 9,
89-
"Id": "361fe970d1e192e9",
90-
"EventTimestamp": "2025-12-22T21:51:48.354Z",
91-
"ParentId": "6151f5ab282d90e4",
92-
"CallbackSucceededDetails": {
93-
"Result": {
94-
"Payload": "{\"id\":2,\"data\":\"second-completed\"}"
95-
}
96-
}
97-
},
98-
{
99-
"EventType": "CallbackSucceeded",
100-
"SubType": "Callback",
101-
"EventId": 10,
102-
"Id": "55998bab939d40e7",
103-
"EventTimestamp": "2025-12-22T21:51:48.354Z",
104-
"ParentId": "2f221a18eb863803",
105-
"CallbackSucceededDetails": {
106-
"Result": {
107-
"Payload": "{\"id\":1,\"data\":\"first-completed\"}"
108-
}
109-
}
110-
},
11185
{
11286
"EventType": "StepStarted",
11387
"SubType": "Step",
114-
"EventId": 11,
88+
"EventId": 9,
11589
"Id": "90ef5a310191970a",
116-
"EventTimestamp": "2025-12-22T21:51:48.355Z",
90+
"EventTimestamp": "2026-02-10T18:17:23.813Z",
11791
"ParentId": "2f221a18eb863803",
11892
"StepStartedDetails": {}
11993
},
12094
{
12195
"EventType": "StepStarted",
12296
"SubType": "Step",
123-
"EventId": 12,
97+
"EventId": 10,
12498
"Id": "1c573df7b335bdcb",
125-
"EventTimestamp": "2025-12-22T21:51:48.355Z",
99+
"EventTimestamp": "2026-02-10T18:17:23.813Z",
126100
"ParentId": "6151f5ab282d90e4",
127101
"StepStartedDetails": {}
128102
},
129103
{
130104
"EventType": "StepSucceeded",
131105
"SubType": "Step",
132-
"EventId": 13,
106+
"EventId": 11,
133107
"Id": "1c573df7b335bdcb",
134-
"EventTimestamp": "2025-12-22T21:51:48.355Z",
108+
"EventTimestamp": "2026-02-10T18:17:23.814Z",
135109
"ParentId": "6151f5ab282d90e4",
136110
"StepSucceededDetails": {
137111
"Result": {},
138112
"RetryDetails": {}
139113
}
140114
},
115+
{
116+
"EventType": "CallbackSucceeded",
117+
"SubType": "Callback",
118+
"EventId": 12,
119+
"Id": "361fe970d1e192e9",
120+
"EventTimestamp": "2026-02-10T18:17:23.913Z",
121+
"ParentId": "6151f5ab282d90e4",
122+
"CallbackSucceededDetails": {
123+
"Result": {
124+
"Payload": "{\"id\":2,\"data\":\"second-completed\"}"
125+
}
126+
}
127+
},
128+
{
129+
"EventType": "CallbackSucceeded",
130+
"SubType": "Callback",
131+
"EventId": 13,
132+
"Id": "55998bab939d40e7",
133+
"EventTimestamp": "2026-02-10T18:17:23.914Z",
134+
"ParentId": "2f221a18eb863803",
135+
"CallbackSucceededDetails": {
136+
"Result": {
137+
"Payload": "{\"id\":1,\"data\":\"first-completed\"}"
138+
}
139+
}
140+
},
141141
{
142142
"EventType": "ContextSucceeded",
143143
"SubType": "WaitForCallback",
144144
"EventId": 14,
145145
"Id": "6151f5ab282d90e4",
146146
"Name": "wait-for-callback-2",
147-
"EventTimestamp": "2025-12-22T21:51:48.357Z",
147+
"EventTimestamp": "2026-02-10T18:17:24.818Z",
148148
"ParentId": "98c6f2c2287f4c73",
149149
"ContextSucceededDetails": {
150150
"Result": {
@@ -158,7 +158,7 @@
158158
"EventId": 15,
159159
"Id": "98c6f2c2287f4c73",
160160
"Name": "parallel-branch-1",
161-
"EventTimestamp": "2025-12-22T21:51:48.357Z",
161+
"EventTimestamp": "2026-02-10T18:17:24.818Z",
162162
"ParentId": "c4ca4238a0b92382",
163163
"ContextSucceededDetails": {
164164
"Result": {
@@ -171,7 +171,7 @@
171171
"SubType": "Step",
172172
"EventId": 16,
173173
"Id": "90ef5a310191970a",
174-
"EventTimestamp": "2025-12-22T21:51:50.357Z",
174+
"EventTimestamp": "2026-02-10T18:17:25.815Z",
175175
"ParentId": "2f221a18eb863803",
176176
"StepSucceededDetails": {
177177
"Result": {},
@@ -184,7 +184,7 @@
184184
"EventId": 17,
185185
"Id": "2f221a18eb863803",
186186
"Name": "wait-for-callback-1",
187-
"EventTimestamp": "2025-12-22T21:51:50.366Z",
187+
"EventTimestamp": "2026-02-10T18:17:25.817Z",
188188
"ParentId": "ea66c06c1e1c05fa",
189189
"ContextSucceededDetails": {
190190
"Result": {
@@ -198,7 +198,7 @@
198198
"EventId": 18,
199199
"Id": "ea66c06c1e1c05fa",
200200
"Name": "parallel-branch-0",
201-
"EventTimestamp": "2025-12-22T21:51:50.366Z",
201+
"EventTimestamp": "2026-02-10T18:17:25.817Z",
202202
"ParentId": "c4ca4238a0b92382",
203203
"ContextSucceededDetails": {
204204
"Result": {
@@ -211,7 +211,7 @@
211211
"SubType": "Parallel",
212212
"EventId": 19,
213213
"Id": "c4ca4238a0b92382",
214-
"EventTimestamp": "2025-12-22T21:51:50.366Z",
214+
"EventTimestamp": "2026-02-10T18:17:25.817Z",
215215
"ContextSucceededDetails": {
216216
"Result": {
217217
"Payload": "{\"all\":[{\"result\":\"{\\\"id\\\":1,\\\"data\\\":\\\"first-completed\\\"}\",\"index\":0,\"status\":\"SUCCEEDED\"},{\"result\":\"{\\\"id\\\":2,\\\"data\\\":\\\"second-completed\\\"}\",\"index\":1,\"status\":\"SUCCEEDED\"}],\"completionReason\":\"ALL_COMPLETED\"}"
@@ -221,19 +221,19 @@
221221
{
222222
"EventType": "InvocationCompleted",
223223
"EventId": 20,
224-
"EventTimestamp": "2025-12-22T21:51:50.367Z",
224+
"EventTimestamp": "2026-02-10T18:17:25.818Z",
225225
"InvocationCompletedDetails": {
226-
"StartTimestamp": "2025-12-22T21:51:48.344Z",
227-
"EndTimestamp": "2025-12-22T21:51:50.367Z",
226+
"StartTimestamp": "2026-02-10T18:17:23.806Z",
227+
"EndTimestamp": "2026-02-10T18:17:25.818Z",
228228
"Error": {},
229-
"RequestId": "3835e53e-7f26-4ebb-b9ab-d705ef995ce2"
229+
"RequestId": "6f665189-5f88-43df-9b33-4b5481027f2f"
230230
}
231231
},
232232
{
233233
"EventType": "ExecutionSucceeded",
234234
"EventId": 21,
235-
"Id": "78d73735-f746-4ad6-9701-9a22dd29b729",
236-
"EventTimestamp": "2025-12-22T21:51:50.368Z",
235+
"Id": "6061bb79-0070-4af3-848a-2d964bca62fc",
236+
"EventTimestamp": "2026-02-10T18:17:25.818Z",
237237
"ExecutionSucceededDetails": {
238238
"Result": {
239239
"Payload": "{\"results\":[{\"id\":1,\"data\":\"first-completed\"},{\"id\":2,\"data\":\"second-completed\"}],\"allCompleted\":true}"

0 commit comments

Comments
 (0)