nx
Nx
GitHub
Nx
Workspace
GitHub
CI Pipeline Executions
Filtered
Runs
Demo
Insights
Compare tasks
Analytics
Sign in
Toggle sidebar
Overview
⌘K
Nx
Loading workspace stats
Loading workspace insights...
Statistics interval
7 days
30 days
Latest CI Pipeline Executions
Status
Fix filter
Filter
Fuzzy
Filter range
Sort by
Sort by
Start time
Sort ascending
Sort descending
Failed
36580
Environment issue
→
85b37823 fix(core): decode non-Buffer chunks and drain before the run help exit ArrayBuffer.isView covers the Uint8Array chunks Buffer.isBuffer missed, which reached logDebug and the TUI cloud message as a byte list ('104,101,108,...') rather than text. nx run <project>:<target> --help printed and exited without draining, the same truncation the rest of this PR fixes at an exit site the earlier sweep missed. Passes null to the write callbacks: Node's console handler branches on err !== null, so a bare cb() nominally signals failure. Records on drain() that it cannot flush through a replaced process.stdout.write, which the SIGINT silencer does deliberately.
by FrozenPandaz
F
Succeeded
36580
2a578ba9 fix(core): accept a callback in either position in the patched stdout writers All three patches replaced process.stdout.write with a function reading (chunk, encoding, callback) positionally, so the equally valid write(chunk, cb) form left the callback stranded and never invoked it. drain() now passes the encoding explicitly, but any other caller awaiting the callback hit the same hang, and createPatchedLogWrite additionally passed a function to chunk.toString() as the encoding. Normalize the callback out of whichever slot it arrives in.
by FrozenPandaz
F
Canceled
36580
2a578ba9 fix(core): accept a callback in either position in the patched stdout writers All three patches replaced process.stdout.write with a function reading (chunk, encoding, callback) positionally, so the equally valid write(chunk, cb) form left the callback stranded and never invoked it. drain() now passes the encoding explicitly, but any other caller awaiting the callback hit the same hang, and createPatchedLogWrite additionally passed a function to chunk.toString() as the encoding. Normalize the callback out of whichever slot it arrives in.
by FrozenPandaz
F
Canceled
36580
2a578ba9 fix(core): accept a callback in either position in the patched stdout writers All three patches replaced process.stdout.write with a function reading (chunk, encoding, callback) positionally, so the equally valid write(chunk, cb) form left the callback stranded and never invoked it. drain() now passes the encoding explicitly, but any other caller awaiting the callback hit the same hang, and createPatchedLogWrite additionally passed a function to chunk.toString() as the encoding. Normalize the callback out of whichever slot it arrives in.
by FrozenPandaz
F
Failed
36580
2a578ba9 fix(core): accept a callback in either position in the patched stdout writers All three patches replaced process.stdout.write with a function reading (chunk, encoding, callback) positionally, so the equally valid write(chunk, cb) form left the callback stranded and never invoked it. drain() now passes the encoding explicitly, but any other caller awaiting the callback hit the same hang, and createPatchedLogWrite additionally passed a function to chunk.toString() as the encoding. Normalize the callback out of whichever slot it arrives in.
by FrozenPandaz
F
Canceled
36580
2a578ba9 fix(core): accept a callback in either position in the patched stdout writers All three patches replaced process.stdout.write with a function reading (chunk, encoding, callback) positionally, so the equally valid write(chunk, cb) form left the callback stranded and never invoked it. drain() now passes the encoding explicitly, but any other caller awaiting the callback hit the same hang, and createPatchedLogWrite additionally passed a function to chunk.toString() as the encoding. Normalize the callback out of whichever slot it arrives in.
by FrozenPandaz
F
Canceled
36580
a50d4f8d fix(core): detach drain()'s listener from the stream it attached to The deferred cleanup re-read process.stdout a macrotask later, so a caller that swapped the stream in between left the listener attached to the old one while removeListener no-oped on the new. Capture the stream once. The EPIPE test also passed on code that crashes on a real pipe: its only assertion was that the promise resolves, which the write callback satisfies on its own. Assert the listener is still attached when 'error' fires, so a listener-removing refactor fails in that test rather than surfacing as an unhandled error attributed to whichever test runs next.
by FrozenPandaz
F
Canceled
36580
a50d4f8d fix(core): detach drain()'s listener from the stream it attached to The deferred cleanup re-read process.stdout a macrotask later, so a caller that swapped the stream in between left the listener attached to the old one while removeListener no-oped on the new. Capture the stream once. The EPIPE test also passed on code that crashes on a real pipe: its only assertion was that the promise resolves, which the write callback satisfies on its own. Assert the listener is still attached when 'error' fires, so a listener-removing refactor fails in that test rather than surfacing as an unhandled error attributed to whichever test runs next.
by FrozenPandaz
F
Canceled
36580
fdc25cec fix(core): remove drain()'s error listener and pin the EPIPE ordering The listener was never detached, so after one drain() every later stdout error was silently swallowed for the rest of the process — an unrelated ENOSPC exited 0 where it previously crashed with a diagnostic. Detach it once the write settles; the removal is deferred because the write callback runs before the 'error' event. The comment justifying `on` over `once` described a mechanism that cannot occur: a write callback never consumes a once('error') registration. The real hazard is removing the listener from a callback shared with write(), which is now what the comment names. The spec's EPIPE case hand-emitted 'error', which that hazardous refactor passed cleanly. It now drives the error through Node's real ordering and kills the mutant, plus asserts no listener survives. Also drains the five sibling release handlers that exit on a status.
by FrozenPandaz
F
Canceled
36580
fdc25cec fix(core): remove drain()'s error listener and pin the EPIPE ordering The listener was never detached, so after one drain() every later stdout error was silently swallowed for the rest of the process — an unrelated ENOSPC exited 0 where it previously crashed with a diagnostic. Detach it once the write settles; the removal is deferred because the write callback runs before the 'error' event. The comment justifying `on` over `once` described a mechanism that cannot occur: a write callback never consumes a once('error') registration. The real hazard is removing the listener from a callback shared with write(), which is now what the comment names. The spec's EPIPE case hand-emitted 'error', which that hazardous refactor passed cleanly. It now drives the error through Node's real ordering and kills the mutant, plus asserts no listener survives. Also drains the five sibling release handlers that exit on a status.
by FrozenPandaz
F
Failed
36580
Generating fix
→
52191bb5 cleanup(core): drop setImmediate workarounds around output.drain() These stood in for a flush that drain() did not actually perform, and carried a 'TODO: Find a better fix for this'. Now that drain() waits for the write queue to empty, an extra event-loop tick adds nothing.
by FrozenPandaz
F
Previous
Next