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(core): handle file change conflicts between sync generators #27695

Merged
merged 1 commit into from
Aug 29, 2024

Conversation

leosvelperez
Copy link
Member

@leosvelperez leosvelperez commented Aug 29, 2024

Current Behavior

When running sync generators in the background (daemon) to cache the results for when needed, they are isolated from each other (each run with its own Tree). This is done because there's no guarantee which sync generator will be run together since that would depend on each specific task graph being run. When a task is run, a task graph is constructed, and sync generators are collected from it and run/retrieved from the cache.

Currently, when we run a task and ask the daemon to run the relevant generators, if there are cached results for a generator that ran in isolation, we return it. We don't check if its file changes conflict with those of another generator included in the task graph. This results in the changes for those conflicting files of the first generator getting overwritten by the changes of the second generator.

Expected Behavior

When running tasks for which there are conflicting file changes between generators in the daemon, the conflicting generators should be re-run sequentially using the same Tree to guarantee that file changes are not overwritten and lost.

Related Issue(s)

Fixes #

@leosvelperez leosvelperez self-assigned this Aug 29, 2024
@leosvelperez leosvelperez requested a review from a team as a code owner August 29, 2024 11:12
Copy link

vercel bot commented Aug 29, 2024

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

1 Skipped Deployment
Name Status Preview Updated (UTC)
nx-dev ⬜️ Ignored (Inspect) Visit Preview Aug 29, 2024 11:14am

@FrozenPandaz FrozenPandaz merged commit 3562131 into master Aug 29, 2024
6 checks passed
@FrozenPandaz FrozenPandaz deleted the core/handle-sync-generator-file-conflicts branch August 29, 2024 17:35
FrozenPandaz pushed a commit that referenced this pull request Sep 3, 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
<!-- This is the behavior we have today -->

When running sync generators in the background (daemon) to cache the
results for when needed, they are isolated from each other (each run
with its own `Tree`). This is done because there's no guarantee which
sync generator will be run together since that would depend on each
specific task graph being run. When a task is run, a task graph is
constructed, and sync generators are collected from it and run/retrieved
from the cache.

Currently, when we run a task and ask the daemon to run the relevant
generators, if there are cached results for a generator that ran in
isolation, we return it. We don't check if its file changes conflict
with those of another generator included in the task graph. This results
in the changes for those conflicting files of the first generator
getting overwritten by the changes of the second generator.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

When running tasks for which there are conflicting file changes between
generators in the daemon, the conflicting generators should be re-run
sequentially using the same `Tree` to guarantee that file changes are
not overwritten and lost.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->
<!-- Fixes NXC-903 -->

Fixes #

(cherry picked from commit 3562131)
Copy link

github-actions bot commented Sep 4, 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 Sep 4, 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