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

Run artifact transforms loaded from the configuration cache for external and file dependencies in parallel #13566

Open
adammurdoch opened this issue Jun 23, 2020 · 1 comment
Labels
a:feature A new functionality @configuration-cache in:configuration-cache Configuration Caching

Comments

@adammurdoch
Copy link
Member

When using vintage builds and querying the contents of a dependency resolution view, then any transforms which still have to run will be executed in parallel and then the results collected.

However, when using builds loaded from the configuration cache, these transforms are run sequentially. This has a number of implications, such as potential performance issues. There should be as few differences as possible between the execution of transforms for vintage builds and for configuration cache builds.

Expected Behavior

Multiple transforms run in parallel regardless of whether configuration cache is enabled or not.

Current Behavior

Transforms are sometimes run sequentially. The underlying cause for this behaviour is that there is currently quite a lot of duplication of logic in the configuration cache, where some behaviours have been (temporarily) reimplemented because the original data structures are not very easy to recreate. There are some downsides to this:

  • Performance may not be as good when the transforms actually need to do some work (rather than just doing an up-to-date check via the VFS). Usually this is not the case and all of these transforms are up-to-date. Performance may well be better in these cases.
  • Only the first transform failure reported, rather than collecting all of the failures and reporting on them at the end of the query.
  • There is a lot of complexity in the configuration cache implementation that shouldn't be there.
  • The duplicated logic will inevitably introduce a new set of edge cases and bugs, that only apply when loading from the configuration cache.

We should address this by refactoring out some reusable pieces that can be more easily recreated by the configuration cache, rather than trying to improve the duplicated logic.

@adammurdoch adammurdoch added this to the 6.7 RC1 milestone Jun 23, 2020
@bamboo bamboo modified the milestones: 6.7 RC1, 6.8 RC1 Sep 2, 2020
@eskatos eskatos modified the milestones: 6.8 RC1, 7.0 RC1 Nov 19, 2020
@eskatos eskatos modified the milestones: 7.0 RC1, 7.1 RC1 Jan 12, 2021
@eskatos eskatos removed this from the 7.1 RC1 milestone Mar 30, 2021
@stale
Copy link

stale bot commented Apr 17, 2022

This issue has been automatically marked as stale because it has not had recent activity. Given the limited bandwidth of the team, it will be automatically closed if no further activity occurs. If you're interested in how we try to keep the backlog in a healthy state, please read our blog post on how we refine our backlog. If you feel this is something you could contribute, please have a look at our Contributor Guide. Thank you for your contribution.

@stale stale bot added the stale label Apr 17, 2022
@eskatos eskatos removed the stale label Apr 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a:feature A new functionality @configuration-cache in:configuration-cache Configuration Caching
Projects
None yet
Development

No branches or pull requests

4 participants