Commit 0ff557e
committed
Add bytes-based flushing to source collectors
Sources read data in and collect it up into batches. Batches are flushed
based on configurable criteria: until now this has been the number of
records collected and how long they have been waiting.
This commit adds another criteria for flushing, based on the memory
usage of the records. `source-batch-max-bytes`, disabled by default,
allows triggering flushing when a certain amount of data has been
collected.
This new feature enables two useful behaviours:
1) Large records: reduce the risk of OOMs when memory-constrained
2) Small records: create larger, more-efficient batches
Memory usage is estimated based on input bytes, rather than by
instrumenting Arrow buffer memory.
Ideally we would implement this based on Arrow buffer usage. However,
Arrow's `ArrayBuilder` trait doesn't expose memory size and we would
need to maintain a lot of code ourselves to make it work. I think it's
reasonable to use input bytes as an approximation.1 parent 4ddc8fd commit 0ff557e
4 files changed
Lines changed: 104 additions & 15 deletions
File tree
- crates
- arroyo-connectors/src/nexmark
- arroyo-formats/src
- arroyo-rpc/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
281 | 281 | | |
282 | 282 | | |
283 | 283 | | |
284 | | - | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
285 | 287 | | |
286 | 288 | | |
287 | 289 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
39 | 42 | | |
40 | 43 | | |
41 | 44 | | |
| |||
49 | 52 | | |
50 | 53 | | |
51 | 54 | | |
| 55 | + | |
52 | 56 | | |
53 | 57 | | |
54 | 58 | | |
| |||
58 | 62 | | |
59 | 63 | | |
60 | 64 | | |
61 | | - | |
| 65 | + | |
62 | 66 | | |
63 | 67 | | |
64 | 68 | | |
| 69 | + | |
65 | 70 | | |
66 | 71 | | |
67 | 72 | | |
| |||
170 | 175 | | |
171 | 176 | | |
172 | 177 | | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
173 | 181 | | |
174 | 182 | | |
175 | 183 | | |
| |||
180 | 188 | | |
181 | 189 | | |
182 | 190 | | |
| 191 | + | |
183 | 192 | | |
184 | 193 | | |
185 | | - | |
| 194 | + | |
186 | 195 | | |
187 | 196 | | |
188 | 197 | | |
| |||
203 | 212 | | |
204 | 213 | | |
205 | 214 | | |
| 215 | + | |
206 | 216 | | |
207 | 217 | | |
208 | 218 | | |
| 219 | + | |
209 | 220 | | |
210 | 221 | | |
211 | 222 | | |
| |||
307 | 318 | | |
308 | 319 | | |
309 | 320 | | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
310 | 328 | | |
311 | 329 | | |
312 | 330 | | |
| |||
440 | 458 | | |
441 | 459 | | |
442 | 460 | | |
| 461 | + | |
443 | 462 | | |
444 | 463 | | |
445 | 464 | | |
| |||
497 | 516 | | |
498 | 517 | | |
499 | 518 | | |
500 | | - | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
501 | 526 | | |
502 | 527 | | |
503 | | - | |
504 | | - | |
505 | | - | |
506 | | - | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
507 | 533 | | |
| 534 | + | |
508 | 535 | | |
509 | | - | |
510 | | - | |
511 | | - | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
512 | 539 | | |
513 | 540 | | |
514 | 541 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
16 | 22 | | |
17 | 23 | | |
18 | 24 | | |
| |||
30 | 36 | | |
31 | 37 | | |
32 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
543 | 543 | | |
544 | 544 | | |
545 | 545 | | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
546 | 550 | | |
547 | 551 | | |
548 | 552 | | |
| |||
0 commit comments