Commit 6ed2660
committed
graph: Fix lost waker bug in StreamAggregator polling
When a stream returns Poll::Ready but the aggregator can't produce
output yet (empty batch or data buffered without completed groups),
the waker is consumed and never re-registered. This causes the
aggregator to stop being polled, deadlocking the subgraph.
Fix by calling cx.waker().wake_by_ref() before returning Pending
whenever any stream returned Ready during the polling cycle.1 parent ccc1835 commit 6ed2660
1 file changed
Lines changed: 13 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
| 118 | + | |
118 | 119 | | |
119 | 120 | | |
120 | 121 | | |
| |||
152 | 153 | | |
153 | 154 | | |
154 | 155 | | |
| 156 | + | |
155 | 157 | | |
156 | 158 | | |
157 | 159 | | |
| |||
167 | 169 | | |
168 | 170 | | |
169 | 171 | | |
| 172 | + | |
170 | 173 | | |
171 | 174 | | |
172 | 175 | | |
| |||
209 | 212 | | |
210 | 213 | | |
211 | 214 | | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
212 | 225 | | |
213 | 226 | | |
214 | 227 | | |
| |||
0 commit comments