Skip to content

experiment-mode --filter 'unit' is working incorrectly after upgrading from v0.93.0 to v0.93.1 #5171

@ErikXu

Description

@ErikXu

Describe the bug

I have two units network and router in my stack. And network unit is a dependency for router unit

The experiment-mode --filter 'unit' was working fine with version v0.93.0:

~ terragrunt --version
terragrunt version v0.93.0

~ terragrunt run --all plan --log-format bare --experiment-mode --filter router
NFO[0000] Using runner pool for stack /root/workspace/observability/infra/live/nonprod
INFO[0000] The runner-pool runner at /root/workspace/observability/infra/live/nonprod will be processed in the following order for command plan:
- Unit /root/workspace/observability/infra/live/nonprod/asia-northeast1/.terragrunt-stack/elk/.terragrunt-stack/network
- Unit /root/workspace/observability/infra/live/nonprod/asia-northeast1/.terragrunt-stack/elk/.terragrunt-stack/router

after upgrading to v0.93.1, I got the following issue:

~ terragrunt --version
terragrunt version v0.93.1

~ terragrunt run --all plan --log-format bare --experiment-mode --filter router
INFO[0000] Using runner pool for stack /root/workspace/observability/infra/live/nonprod
ERRO[0000] Unit /root/workspace/observability/infra/live/nonprod/asia-northeast1/.terragrunt-stack/elk/.terragrunt-stack/router specifies ../network as a dependency, but that dependency was not one of the ones found while scanning subfolders: [/root/workspace/observability/infra/live/nonprod/asia-northeast1/.terragrunt-stack/elk/.terragrunt-stack/router/terragrunt.hcl]
ERRO[0000] Unable to determine underlying exit code, so Terragrunt will exit with error code 1

I guess the root cause should be changing unitsMap, err := unitResolver.ResolveTerraformModules(ctx, l, unitPaths) to unitsMap, err := unitResolver.ResolveFromDiscovery(ctx, l, nonStackComponents) in this commit:
98c1754#diff-79651e289f124fef748d811c508678ee163db9edd3f1fb902579cfe67568b389R116

I've added testing code to internal/runner/runnerpool/runner.go to trace:

  • v0.93.0
// ...
	unitsMap, err := unitResolver.ResolveTerraformModules(ctx, l, unitPaths)

        // testing code
	fmt.Println("unitResolver.ResolveTerraformModules len:")
	fmt.Println(len(unitsMap))
	
	fmt.Println("unitResolver.ResolveTerraformModules keys:")
	for key := range unitsMap {
		fmt.Println(key)
	}

	if err != nil {
		return nil, err
	}
// ...

output:

# two units
unitResolver.ResolveTerraformModules len:
2
unitResolver.ResolveTerraformModules keys:
0
1
  • v0.93.1
// ...
	unitsMap, err := unitResolver.ResolveFromDiscovery(ctx, l, nonStackComponents)

        // testing code
	fmt.Println("unitResolver.ResolveFromDiscovery len:")
	fmt.Println(len(unitsMap))
	
	fmt.Println("unitResolver.ResolveFromDiscovery keys:")
	for key := range unitsMap {
		fmt.Println(key)
	}

	if err != nil {
		return nil, err
	}
// ...

output:

# no unit
unitResolver.ResolveFromDiscovery len:
0
unitResolver.ResolveFromDiscovery keys:

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions