-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
feat: Make skip-dependency-inputs the default behavior for performance #4590
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
base: main
Are you sure you want to change the base?
feat: Make skip-dependency-inputs the default behavior for performance #4590
Conversation
This change makes skipping dependency inputs the default behavior in Terragrunt, providing significant performance improvements for all users.
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
📝 WalkthroughWalkthroughThe changes remove support for reading inputs from dependencies ( Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant TerragruntParser
participant Logger
User->>TerragruntParser: Parse terragrunt.hcl with dependency.foo.inputs
TerragruntParser->>TerragruntParser: detectDeprecatedConfigurations()
TerragruntParser-->>User: Return error "Reading inputs from dependencies is no longer supported"
TerragruntParser->>Logger: Log deprecation message
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Assessment against linked issues
Assessment against linked issues: Out-of-scope changes
Possibly related PRs
Suggested reviewers
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. 📜 Recent review detailsConfiguration used: .coderabbit.yaml 📒 Files selected for processing (6)
🧰 Additional context used📓 Path-based instructions (1)**/*.go⚙️ CodeRabbit Configuration File
Files:
🧠 Learnings (2)📓 Common learnings
config/config_partial.go (3)Learnt from: levkohimins Learnt from: yhakbar Learnt from: wakeful 🔇 Additional comments (12)
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
I'm leaving this in draft until we're ready to merge according to the deprecation schedule. Happy to work with you on it to make sure it's good, though! |
Great—thanks for flagging the draft status, @yhakbar! I’ll hold off on marking it ready and continue refining the tests and docs in the meantime. Let me know if there are any specific adjustments or additional test cases you’d like me to cover before the deprecation date. |
This change makes skipping dependency inputs the default behavior in Terragrunt, providing significant performance improvements for all users.
Description
Fixes #4589 #3873, #3013, #3538, #3934.
Closes #4601
This PR makes skipping dependency inputs the default behavior in Terragrunt, providing significant performance improvements for all users. Previously, users had to explicitly enable the
skip-dependencies-inputs
strict control to avoid performance penalties. Now, the deprecated dependency inputs feature is blocked by default.Problem Statement
The dependency inputs feature (
dependency.foo.inputs.bar
) has been causing major performance issues:Root Cause: When parsing dependency inputs, Terragrunt performs recursive parsing of the entire dependency tree, causing exponential slowdown with dependency depth and unnecessary state fetching.
Solution
Before: Dependency inputs parsed by default (slow) → opt-in to skip with
--strict-control=skip-dependencies-inputs
(fast)After: Dependency inputs blocked by default (fast) → use dependency outputs instead (recommended)
Changes Made
Core Logic:
config/config.go
: Block dependency inputs indetectDeprecatedConfigurations()
config/config_partial.go
: Skip dependency input parsing by defaultinternal/strict/controls/controls.go
: Update control descriptionTesting:
config/dependency_inputs_test.go
)Performance Impact
This change aligns with the Road to 1.0 schedule (#3535) item 6 planned for October 2025.
TODOs
Read the Gruntwork contribution guidelines.
Release Notes (draft)
Updated: Dependency input parsing behavior - now blocked by default for performance improvements. Users must migrate from
dependency.foo.inputs.bar
todependency.foo.outputs.bar
.Migration Guide
Breaking Change: Configurations using
dependency.foo.inputs.bar
will now fail with a clear error message.Before (will now fail):