Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: Only create @babel/node IPC channel when needed #13295

Merged
merged 3 commits into from May 11, 2021

Conversation

quickgiant
Copy link
Contributor

@quickgiant quickgiant commented May 11, 2021

Q                       A
Fixed Issues? Fixes #13259
Patch: Bug Fix? Yes
Major: Breaking Change?
Minor: New Feature?
Tests Added + Pass? Yes
Documentation PR Link
Any Dependency Changes?
License MIT

Fixes an issue where babel-node always created an IPC channel for its spawned child, regardless of whether the outer babel-node process had an IPC channel itself. This caused compatibility issues with scripts expecting to run without IPC, or expecting to only run with IPC in certain scenarios, for example the exit-hook library that assumes an IPC channel will only be present when running inside PM2. In those cases, the open IPC channel can cause the script to hang after completion unless process.disconnect() is called, which does not occur when running scripts directly through node on the command line.

To fix, the IPC channel is only created if the babel-node process itself has an IPC channel, in which case messages are expected to be passed through.

In addition, tests for this behavior have been consolidated in babel-node's fixtures, which now have options for handling IPC.

@babel-bot
Copy link
Collaborator

babel-bot commented May 11, 2021

Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/45975/

@codesandbox-ci
Copy link

codesandbox-ci bot commented May 11, 2021

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Latest deployment of this branch, based on commit d580fba:

Sandbox Source
babel-repl-custom-plugin Configuration
babel-plugin-multi-config Configuration

Copy link
Contributor

@JLHwung JLHwung left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for changes to fixture runner.

packages/babel-node/src/babel-node.js Outdated Show resolved Hide resolved
@JLHwung JLHwung added PR: Bug Fix 🐛 A type of pull request used for our changelog categories pkg: node labels May 11, 2021
Co-authored-by: Huáng Jùnliàng <jlhwung@gmail.com>
Copy link
Member

@nicolo-ribaudo nicolo-ribaudo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@nicolo-ribaudo nicolo-ribaudo changed the title Fix: Only create babel-node IPC channel when needed Fix: Only create @babel/node IPC channel when needed May 11, 2021
@nicolo-ribaudo nicolo-ribaudo merged commit cca97d1 into babel:main May 11, 2021
@github-actions github-actions bot added the outdated A closed issue/PR that is archived due to age. Recommended to make a new issue label Aug 11, 2021
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 11, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
outdated A closed issue/PR that is archived due to age. Recommended to make a new issue pkg: node PR: Bug Fix 🐛 A type of pull request used for our changelog categories
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: babel-node IPC channel causes process to hang when message listener is added
4 participants