Upgrade bufout to v1.0.0 and remove EventEmitter listener limits - #438
Conversation
|
Merged What failed: Why it isn't this PR: What it actually is: this branch was based on c73d30c, four commits behind
That PR notes it wasn't exercised on-device, so this run is likely the first device coverage it gets. Treating the merge as the fix is a hypothesis, not a confirmed one — if iOS stays red on the new head, the failure is pre-existing on Labels Generated by Claude Code |
bufout v1.0.0 keeps the number of listeners on the process and on the output streams constant regardless of how many children are spawned concurrently: a single shared exit/SIGINT listener is attached only while children are running, and every child pipes into one shared pass-through per destination stream. That removes the reason the CLIs raised EventEmitter.defaultMaxListeners to 100, so those assignments (and the now-unused node:events / node:stream imports) are gone and Node's default limit applies again, restoring the leak warning it exists to give. Verified with 80 concurrent children in both "inherit" and "buffered" mode, plus the SpawnFailure flush path, at the default limit of 10: no MaxListenersExceededWarning, and process listener counts return to zero. The public API is unchanged from 0.3.x — the major bump reflects the 1.0.0 milestone, not a breaking change to spawn/SpawnFailure. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BAjP89a9VA9EtQsVBxGcto
The Check workflow only runs on opened/synchronize/reopened, so the Apple/Android/Ferric jobs gated on labels never evaluated the labels added after the pull request was opened. This empty commit fires a synchronize event so they run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BAjP89a9VA9EtQsVBxGcto
cc78aee to
debfe4c
Compare
Summary
Upgrades
bufoutto v1.0.0, which implements efficient listener management for concurrent child process spawning. This eliminates the need to raiseEventEmitter.defaultMaxListenersto 100 across the CLI packages.Changes
bufoutfrom ^0.3.2 to ^1.0.0 in@react-native-node-api/cli-utilsEventEmitter.defaultMaxListeners = 100assignments from:packages/ferric/src/run.tspackages/cmake-rn/src/cli.tspackages/host/src/node/cli/program.tsEventEmitterimports from the above filesImplementation Details
The new version of
bufoutuses a shared pass-through stream per destination and attaches a single sharedexit/SIGINTlistener only while children are running. This keeps the number of listeners constant regardless of concurrent child process count, restoring Node's default listener limit and re-enabling the leak detection warning it provides.https://claude.ai/code/session_01BAjP89a9VA9EtQsVBxGcto