Skip to content

fix(core): resolveReferences should only update references that require updates on its second pass in nested stacks - #38813

Draft
ShadowCat567 wants to merge 1 commit into
mainfrom
resolving-nested-stacks
Draft

fix(core): resolveReferences should only update references that require updates on its second pass in nested stacks#38813
ShadowCat567 wants to merge 1 commit into
mainfrom
resolving-nested-stacks

Conversation

@ShadowCat567

@ShadowCat567 ShadowCat567 commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Reason for this change

When we synthesize an app with nested stacks, we do two passes of resolveReferences which is an expensive operation that walks the construct tree and resolves all the tokens it finds.
We do not need to resolve tokens in every construct in the construct tree a second time after setting up our nested stack assets. We should only revisit the constructs that received nested stack assets and do a second pass resolve on them instead of doing a second pass resolve on the entire stack.

Description of changes

We have a new function resolveReferencesInElements which will resolve all references in a given construct. This is used by resolveReferences which passes it a DFS iterator which goes through all the constructs in the construct tree. This is also directly invoked on all of the nested stacks, instead of starting from the root of the construct tree (like we did previously).

Describe any new or updated permissions being added

N/A

Description of how you validated changes

Added new tests to ensure we are not missing any cross stack references and ensured current tests relating to nested stacks still pass.
When I tested on a stack with a lot of nested stacks I saw the time taken by the second resolve pass after defineNestedStackAsset drop from 3,404ms to 35ms.

Checklist


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

@github-actions github-actions Bot added the p2 label Sep 11, 2026
@aws-cdk-automation
aws-cdk-automation requested a review from a team September 11, 2026 17:42
@github-actions github-actions Bot added the star-contributor [Pilot] contributed between 25-49 PRs to the CDK label Sep 11, 2026
@mergify mergify Bot added the contribution/core This is a PR that came from AWS. label Sep 11, 2026
@mergify
mergify Bot deployed to automation September 11, 2026 17:43 Active
@mergify
mergify Bot deployed to automation September 11, 2026 17:43 Active
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ This pull request description does not follow the correct template structure.

PRs without a linked issue will receive lower priority for review and merging. Please update the description to follow the PR template and include a line like Closes #123 in the Issue section. If no existing issue matches your change, create one first.

@aws-cdk-automation aws-cdk-automation left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pull request linter fails with the following errors:

❌ Fixes must contain a change to an integration test file and the resulting snapshot.

If you believe this pull request should receive an exemption, please comment and provide a justification. A comment requesting an exemption should contain the text Exemption Request. Additionally, if clarification is needed, add Clarification Request to a comment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contribution/core This is a PR that came from AWS. p2 star-contributor [Pilot] contributed between 25-49 PRs to the CDK

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants