Commit b475909
committed
fix: avoid StackOverflowError in PersistBarrier.awaitPersisted for large steps
awaitPersisted folded a step's per-event barriers into a left-nested
Completable.andThen(...) chain. A single step can carry many events (an agent
transfer folds the sub-agent's events into the parent step), and the nested
chain recurses once per element on both subscription and completion, throwing
StackOverflowError for long sessions.
Await the barriers with Completable.concat instead, which drains its sources
iteratively and stays stack-safe while preserving the same await semantics
(order is irrelevant, as each subject retains its terminal state).
Adds a regression test that awaits 50k events in a single step.1 parent 6a1ce6e commit b475909
2 files changed
Lines changed: 34 additions & 3 deletions
File tree
- core/src
- main/java/com/google/adk/flows/llmflows
- test/java/com/google/adk/flows/llmflows
Lines changed: 11 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| |||
72 | 73 | | |
73 | 74 | | |
74 | 75 | | |
75 | | - | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
76 | 84 | | |
77 | 85 | | |
78 | 86 | | |
79 | | - | |
| 87 | + | |
80 | 88 | | |
81 | 89 | | |
82 | | - | |
| 90 | + | |
83 | 91 | | |
84 | 92 | | |
85 | 93 | | |
| |||
Lines changed: 23 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
115 | 138 | | |
116 | 139 | | |
117 | 140 | | |
| |||
0 commit comments