-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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(core): move plugin worker to socket #26558
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 1 Ignored Deployment
|
☁️ Nx Cloud ReportCI is running/has finished running commands for commit c900c76. As they complete they will appear below. Click to see the status, the terminal output, and the build insights. 📂 See all runs for this CI Pipeline Execution ✅ Successfully ran 6 targets
Sent with 💌 from NxCloud. |
c20872a
to
0e6a210
Compare
3b67a1c
to
6d905f9
Compare
eba4ddb
to
7488713
Compare
7b6269e
to
fb7bd25
Compare
fb7bd25
to
8338304
Compare
71d4a67
to
ee02f28
Compare
ee02f28
to
4e9c414
Compare
<!-- Please make sure you have read the submission guidelines before posting an PR --> <!-- https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr --> <!-- Please make sure that your commit message follows our format --> <!-- Example: `fix(nx): must begin with lowercase` --> <!-- If this is a particularly complex change or feature addition, you can request a dedicated Nx release for this pull request branch. Mention someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they will confirm if the PR warrants its own release for testing purposes, and generate it for you if appropriate. --> ## Current Behavior Plugin isolation communicates with workers via built-in node IPC with forked processes. When doing this, the parent process will not exit until the child process has exited, in case more messages would be sent. This requires an explicit call to shut down the plugin workers. We set this up as a `process.on('exit')` listener, to shutdown the workers whenever the main Nx process dies. This is "fine", but requires explicit calls to `process.exit` as node won't exit on its own otherwise. ## Expected Behavior To allow plugin workers to clean themselves up on exit, but not require explicit `process.exit` calls, we need to detach them from the main process and call `unref`. This only works when IPC is not being used. As such, we need a different way to communicate with the worker. This PR updates the communication method to mirror the daemon, and communicate over a socket. Additionally, this PR enables isolation during the Nx repo's E2E tests. ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #
This pull request has already been merged/closed. If you experience issues related to these changes, please open a new issue referencing this pull request. |
Current Behavior
Plugin isolation communicates with workers via built-in node IPC with forked processes. When doing this, the parent process will not exit until the child process has exited, in case more messages would be sent. This requires an explicit call to shut down the plugin workers.
We set this up as a
process.on('exit')
listener, to shutdown the workers whenever the main Nx process dies. This is "fine", but requires explicit calls toprocess.exit
as node won't exit on its own otherwise.Expected Behavior
To allow plugin workers to clean themselves up on exit, but not require explicit
process.exit
calls, we need to detach them from the main process and callunref
. This only works when IPC is not being used. As such, we need a different way to communicate with the worker.This PR updates the communication method to mirror the daemon, and communicate over a socket. Additionally, this PR enables isolation during the Nx repo's E2E tests.
Related Issue(s)
Fixes #