fix(core): collect all logs from forked processes #27778
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Current Behavior
We have a monorepo with ~450 packages and run tasks with 16x parallelism in CI. We've recently noticed that running tasks with
static
logging can lead to random tasks losing logs. Even if the task is a simpleecho SOMETHING
, logs get lost sporadically.After digging into the task runner, I found that the forked task runner currently collects logs from
stdout
andstderr
, then joins those when the processexit
event is emitted. The problem appears to stem from the fact that theexit
event is occasionally emitted before thestdout
andstderr
streams are closed, leading to lost logs.Expected Behavior
All logs should be collected, even if they are emitted after the process
exit
event.I've updated the task runner to wait for the
stdout
andstderr
streams to end before collecting logs.Note: I didn't see any tests specifically for this file, but it should still run all the new code if theres is a happy path case of forked tasks with static logging.