mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-17 16:38:54 +00:00
When a transformer fails mid-stream (e.g. join -s with a malformed left file), the error could be lost, yielding exit 0 with no stderr message: - runSingleTransformerBatch forwarded the end-of-stream marker downstream before runSingleTransformer sent the error to dataProcessingErrorChannel, so the record-writer could finish and signal done-writing while the error was still unsent. - Even with the error buffered, stream.Stream's select loop chooses among simultaneously-ready channels at random, and exiting on the done-writing signal dropped the buffered error. Send the error before forwarding the end-of-stream marker (so it is always buffered before the writer can finish), and drain the error channels after the select loop exits. Observed as a one-off Windows CI failure of test/cases/verb-join/left-file-malformed-sorted, where the same case passed on automatic rerun within the same job. Reproduced locally by widening the deschedule window with a sleep between the end-of-stream forward and the error send: 5/5 runs exited 0 with empty stderr; with this fix, 200/200 runs exit 1 with the expected message even with adversarial delays injected on both sides of the end-of-stream forward. Follow-up to the os.Exit-removal refactor (plans/exit.md, #2204/#2205). Co-authored-by: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| auxents | ||
| bifs | ||
| cli | ||
| climain | ||
| colorizer | ||
| dkvpx | ||
| dsl | ||
| entrypoint | ||
| go-csv | ||
| input | ||
| lib | ||
| mlrval | ||
| output | ||
| parsing | ||
| pbnjay-strptime | ||
| platform | ||
| runtime | ||
| scan | ||
| stream | ||
| terminals | ||
| transformers | ||
| types | ||
| version | ||
| README.md | ||
Please see ../../README-dev.md for an overview; please see each subdirectory for details about it.