always evaluate module outputs during destroy #33462
Merged
+43
−35
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.
A module output is generally not used during destroy, however it must be evaluated when its value is used by a provider for configuration, because that configuration is not stored between walks.
There was an oversight in the output expansion node where the output node was not created because the operation was destroy, and module outputs have nothing to destroy. This however skipped evaluation when the output is needed by a provider as mentioned above. Because of the way an implied plan is stored internally when executing
terraform destroy
, this went unnoticed by the test.Allowing the output to be evaluated during destroy fixes the issue, and should be acceptable because an output is classified as temporary in the graph, and will be pruned when not actually needed.
Update the existing test to serialize the plan, which triggers the failure.
Fixes #33455