-
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
regression in 19.8.4 regarding task execution order #28380
Comments
We are facing the same issue attempting to upgrade form Running a set of validations with If I execute the validation targets one by one without Nx Report
|
i suspect it might be related to this github issue #26929 |
also might to relate to github issue #28599 |
<!-- 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 --> - we introduce a feature to allow circular project dependencies to execute tasks in pr https://github.com/nrwl/nx/pull/28227/files - for this feature, we introduce the concept of dummy task as a temporary placeholder so we can still generate a task graph even if dependencies contain circular dependencies - however, it does not handle a task graph of multiple dummy task deps. for example: lib1 -> lib2 -> lib3 -> lib4 if we got task graph like: lib1:build -> lib2:dummy lib2:dummy -> lib3:dummy lib3:dummy -> lib4:rebuild currently, it does not create a dependency between lib1:build->lib4:prebuild ## Expected Behavior <!-- This is the behavior we should expect with the changes in this PR --> it should link the dependency when it contains multiple level of depending on dummy tasks ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #28599 and #28380
fixed in pr #28669 |
<!-- 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 --> - we introduce a feature to allow circular project dependencies to execute tasks in pr https://github.com/nrwl/nx/pull/28227/files - for this feature, we introduce the concept of dummy task as a temporary placeholder so we can still generate a task graph even if dependencies contain circular dependencies - however, it does not handle a task graph of multiple dummy task deps. for example: lib1 -> lib2 -> lib3 -> lib4 if we got task graph like: lib1:build -> lib2:dummy lib2:dummy -> lib3:dummy lib3:dummy -> lib4:rebuild currently, it does not create a dependency between lib1:build->lib4:prebuild ## Expected Behavior <!-- This is the behavior we should expect with the changes in this PR --> it should link the dependency when it contains multiple level of depending on dummy tasks ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #28599 and #28380
<!-- 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 --> - we introduce a feature to allow circular project dependencies to execute tasks in pr https://github.com/nrwl/nx/pull/28227/files - for this feature, we introduce the concept of dummy task as a temporary placeholder so we can still generate a task graph even if dependencies contain circular dependencies - however, it does not handle a task graph of multiple dummy task deps. for example: lib1 -> lib2 -> lib3 -> lib4 if we got task graph like: lib1:build -> lib2:dummy lib2:dummy -> lib3:dummy lib3:dummy -> lib4:rebuild currently, it does not create a dependency between lib1:build->lib4:prebuild ## Expected Behavior <!-- This is the behavior we should expect with the changes in this PR --> it should link the dependency when it contains multiple level of depending on dummy tasks ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #28599 and #28380
<!-- 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. --> <!-- This is the behavior we have today --> - we introduce a feature to allow circular project dependencies to execute tasks in pr https://github.com/nrwl/nx/pull/28227/files - for this feature, we introduce the concept of dummy task as a temporary placeholder so we can still generate a task graph even if dependencies contain circular dependencies - however, it does not handle a task graph of multiple dummy task deps. for example: lib1 -> lib2 -> lib3 -> lib4 if we got task graph like: lib1:build -> lib2:dummy lib2:dummy -> lib3:dummy lib3:dummy -> lib4:rebuild currently, it does not create a dependency between lib1:build->lib4:prebuild <!-- This is the behavior we should expect with the changes in this PR --> it should link the dependency when it contains multiple level of depending on dummy tasks <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #28599 and #28380
Current Behavior
When describing task dependencies via
nx.json
we'd expect those task dependencies to be honored (i.e. executed one after another) when running withnx run-many
andparallel
set to a value greater than one in thenx.json
With nx versions 20.0.0 as well as 19.8.4 and 19.5.8 (almost certainly introduced by #28227) task dependency order is not properly followed by nx.
E.g. with an nx.json like
And two projects (
p1
andp2
), wherep1
defines aprebuild
task andp2
depends onp1
Running
nx run-many --target pretest --parallel 10
can now result in a situation wherep2:pretest
andp1:prebuild
are executed at the same time which might lead to errors ifp1:prebuild
is some sort of code-generation step upon whichp2
depends.I haven't been able to come up wth a minimal example to reproduce this but the issue was introduced in all nx releases which included #28227. That PR apparently reworked the way the project graph is built quite a bit and maybe introduced some inconsistencies
Expected Behavior
The task dependency order should be adhered to as expected. Tasks which depend upon one another MUST not be executed in parallel when running via
nx run-many
.Steps to Reproduce
nx run-many
and a large enough parallel settingNx Report
Operating System
The text was updated successfully, but these errors were encountered: