Skip to content

fix(core): move plugin worker to socket#26558

Merged
FrozenPandaz merged 12 commits intomasterfrom
fix/move-plugin-worker-to-socket
Jun 26, 2024
Merged

fix(core): move plugin worker to socket#26558
FrozenPandaz merged 12 commits intomasterfrom
fix/move-plugin-worker-to-socket

Conversation

@AgentEnder
Copy link
Copy Markdown
Member

@AgentEnder AgentEnder commented Jun 14, 2024

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)

Fixes #

@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 14, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

1 Ignored Deployment
Name Status Preview Updated (UTC)
nx-dev ⬜️ Ignored (Inspect) Visit Preview Jun 26, 2024 5:12pm

@AgentEnder AgentEnder force-pushed the fix/move-plugin-worker-to-socket branch 7 times, most recently from c20872a to 0e6a210 Compare June 20, 2024 22:11
@AgentEnder AgentEnder force-pushed the fix/move-plugin-worker-to-socket branch from 3b67a1c to 6d905f9 Compare June 24, 2024 21:41
@AgentEnder AgentEnder marked this pull request as ready for review June 24, 2024 22:07
@AgentEnder AgentEnder force-pushed the fix/move-plugin-worker-to-socket branch 2 times, most recently from eba4ddb to 7488713 Compare June 25, 2024 13:09
@AgentEnder AgentEnder force-pushed the fix/move-plugin-worker-to-socket branch from 7b6269e to fb7bd25 Compare June 25, 2024 18:24
@AgentEnder AgentEnder requested a review from a team as a code owner June 25, 2024 18:24
@AgentEnder AgentEnder force-pushed the fix/move-plugin-worker-to-socket branch from fb7bd25 to 8338304 Compare June 25, 2024 20:02
@AgentEnder AgentEnder force-pushed the fix/move-plugin-worker-to-socket branch 2 times, most recently from 71d4a67 to ee02f28 Compare June 25, 2024 21:22
@AgentEnder AgentEnder force-pushed the fix/move-plugin-worker-to-socket branch from ee02f28 to 4e9c414 Compare June 25, 2024 23:06
@FrozenPandaz FrozenPandaz merged commit a0e8f83 into master Jun 26, 2024
@FrozenPandaz FrozenPandaz deleted the fix/move-plugin-worker-to-socket branch June 26, 2024 21:31
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 #
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jul 2, 2024

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.

@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Jul 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants