fix(core): move plugin worker to socket#26558
Merged
FrozenPandaz merged 12 commits intomasterfrom Jun 26, 2024
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 1 Ignored Deployment
|
Contributor
☁️ 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
FrozenPandaz
approved these changes
Jun 26, 2024
meeroslav
pushed a commit
that referenced
this pull request
Jun 27, 2024
<!-- 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 #
Contributor
|
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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
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.exitas 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.exitcalls, 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 #