Implement caching for import_* calls if context isn't forced. #67217
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.
Basically the notion is for
import_*
tags to cache the content rendered if it's just using the global render context; that cache lives for the duration of the minion render (or state render if triggered via minion side).This is an optimization for heavy users of
import_yaml
; in general pillarstack is a better approach if one can structure their configurables that way, but for codebases not yet there (or limited due to other reasons) improvingimport_*
performance is beneficial.For example, the codebase I work against- this reduces our pillar render time from ~74s to ~65s; that's something of an edge case for our renders, but the complexity of the target is why it's so large, and why an optimization like this has value.
This logic is wired such that if context is enabled for the
import
--meaning the target does not have a stable render context (like one has in a state or while doing a pillar render)--caching is disabled automatically.What does this PR do?
What issues does this PR fix or reference?
Fixes
Previous Behavior
Remove this section if not relevant
New Behavior
Remove this section if not relevant
Merge requirements satisfied?
[NOTICE] Bug fixes or features added to Salt require tests.
Commits signed with GPG?
Yes/No
Please review Salt's Contributing Guide for best practices, including the
PR Guidelines.
See GitHub's page on GPG signing for more information about signing commits with GPG.