Commit a37f691
Bound flush() retries so a persistently-retriable upload can't hang teardown
The synchronous `flush()` on the shutdown path retried a `.retry` upload
result in an unbounded loop. A persistently retriable server (503/500/
408/429) or a downed network — both surface as `needsRetry` — would loop
forever, hanging process teardown.
Cap flush retries at 3 (1 initial attempt + 3 retries). On giving up,
report failure and leave the undelivered batch on disk for a later run.
The background worker's indefinite cross-tick retry behaviour is
unchanged; only the bounded shutdown flush is affected.
Adds a regression test that a persistently-retriable upload returns
failure instead of hanging, attempts exactly 4 uploads, and leaves the
batch on disk.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>1 parent 3dd5144 commit a37f691
2 files changed
Lines changed: 56 additions & 0 deletions
File tree
- Sources/EventsExporter/Upload
- Tests/EventsExporter/Upload
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
94 | 101 | | |
95 | 102 | | |
96 | 103 | | |
| |||
103 | 110 | | |
104 | 111 | | |
105 | 112 | | |
| 113 | + | |
106 | 114 | | |
107 | 115 | | |
108 | 116 | | |
| |||
112 | 120 | | |
113 | 121 | | |
114 | 122 | | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
115 | 132 | | |
116 | 133 | | |
117 | 134 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
304 | 304 | | |
305 | 305 | | |
306 | 306 | | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
307 | 346 | | |
308 | 347 | | |
309 | 348 | | |
| |||
0 commit comments