fix: setting the region after resource has been removed from state due resource disappearance#43659
Conversation
Community GuidelinesThis comment is added to every new Pull Request to provide quick reference to how the Terraform AWS Provider is maintained. Please review the information below, and thank you for contributing to the community that keeps the provider thriving! 🚀 Voting for Prioritization
Pull Request Authors
|
dda1f07 to
84f3aaf
Compare
…e to disappearance
84f3aaf to
8758395
Compare
ewbankkit
left a comment
There was a problem hiding this comment.
LGTM 🚀.
v6.7.0
% make testacc TESTARGS='-run=TestAccS3TablesTable_disappears' PKG=s3tables
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.24.5 test ./internal/service/s3tables/... -v -count 1 -parallel 20 -run=TestAccS3TablesTable_disappears -timeout 360m -vet=off
2025/08/01 14:33:00 Creating Terraform AWS Provider (SDKv2-style)...
2025/08/01 14:33:00 Initializing Terraform AWS Provider (SDKv2-style)...
=== RUN TestAccS3TablesTable_disappears
=== PAUSE TestAccS3TablesTable_disappears
=== CONT TestAccS3TablesTable_disappears
table_test.go:116: Step 1/1 error: Post-apply refresh plan check(s) failed:
'aws_s3tables_table.test' - expected Create, got action(s): [delete create]
--- FAIL: TestAccS3TablesTable_disappears (17.51s)
FAIL
FAIL github.com/hashicorp/terraform-provider-aws/internal/service/s3tables 22.862s
FAIL
make: *** [testacc] Error 1v5.100.0
% make testacc TESTARGS='-run=TestAccS3TablesTable_disappears' PKG=s3tables
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.23.10 test ./internal/service/s3tables/... -v -count 1 -parallel 20 -run=TestAccS3TablesTable_disappears -timeout 360m -vet=off
2025/08/01 14:38:58 Initializing Terraform AWS Provider...
=== RUN TestAccS3TablesTable_disappears
=== PAUSE TestAccS3TablesTable_disappears
=== CONT TestAccS3TablesTable_disappears
--- PASS: TestAccS3TablesTable_disappears (17.80s)
PASS
ok github.com/hashicorp/terraform-provider-aws/internal/service/s3tables 22.545sWith fix
% make testacc TESTARGS='-run=TestAccS3TablesTable_disappears' PKG=s3tables
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.24.5 test ./internal/service/s3tables/... -v -count 1 -parallel 20 -run=TestAccS3TablesTable_disappears -timeout 360m -vet=off
2025/08/01 14:54:03 Creating Terraform AWS Provider (SDKv2-style)...
2025/08/01 14:54:03 Initializing Terraform AWS Provider (SDKv2-style)...
=== RUN TestAccS3TablesTable_disappears
=== PAUSE TestAccS3TablesTable_disappears
=== CONT TestAccS3TablesTable_disappears
--- PASS: TestAccS3TablesTable_disappears (17.85s)
PASS
ok github.com/hashicorp/terraform-provider-aws/internal/service/s3tables 23.155sSDKv2 resource
% make testacc TESTARGS='-run=TestAccS3ControlAccessPoint_disappears' PKG=s3control
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.24.5 test ./internal/service/s3control/... -v -count 1 -parallel 20 -run=TestAccS3ControlAccessPoint_disappears -timeout 360m -vet=off
2025/08/01 14:56:53 Creating Terraform AWS Provider (SDKv2-style)...
2025/08/01 14:56:53 Initializing Terraform AWS Provider (SDKv2-style)...
=== RUN TestAccS3ControlAccessPoint_disappears
=== PAUSE TestAccS3ControlAccessPoint_disappears
=== CONT TestAccS3ControlAccessPoint_disappears
--- PASS: TestAccS3ControlAccessPoint_disappears (16.58s)
PASS
ok github.com/hashicorp/terraform-provider-aws/internal/service/s3control 21.821s% AWS_DEFAULT_REGION=us-east-1 make testacc TESTARGS='-run=TestAccAppFabric_serial/^AppBundle$$' PKG=appfabric
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.24.5 test ./internal/service/appfabric/... -v -count 1 -parallel 20 -run=TestAccAppFabric_serial/^AppBundle$ -timeout 360m -vet=off
2025/08/01 15:30:11 Creating Terraform AWS Provider (SDKv2-style)...
2025/08/01 15:30:11 Initializing Terraform AWS Provider (SDKv2-style)...
=== RUN TestAccAppFabric_serial
=== PAUSE TestAccAppFabric_serial
=== CONT TestAccAppFabric_serial
=== RUN TestAccAppFabric_serial/AppBundle
=== RUN TestAccAppFabric_serial/AppBundle/upgradeFromV5PlanRefreshFalse
=== RUN TestAccAppFabric_serial/AppBundle/upgradeFromV5WithDefaultRegionRefreshFalse
=== RUN TestAccAppFabric_serial/AppBundle/upgradeFromV5WithNewRegionRefreshFalse
=== RUN TestAccAppFabric_serial/AppBundle/basic
=== RUN TestAccAppFabric_serial/AppBundle/cmk
=== RUN TestAccAppFabric_serial/AppBundle/tags
=== RUN TestAccAppFabric_serial/AppBundle/tags/EmptyMap
=== RUN TestAccAppFabric_serial/AppBundle/tags/AddOnUpdate
=== RUN TestAccAppFabric_serial/AppBundle/tags/EmptyTag_OnUpdate_Add
=== RUN TestAccAppFabric_serial/AppBundle/tags/DefaultTags_providerOnly
=== RUN TestAccAppFabric_serial/AppBundle/tags/DefaultTags_updateToResourceOnly
=== RUN TestAccAppFabric_serial/AppBundle/tags/DefaultTags_emptyResourceTag
=== RUN TestAccAppFabric_serial/AppBundle/tags/ComputedTag_OnCreate
=== RUN TestAccAppFabric_serial/AppBundle/tags/ComputedTag_OnUpdate_Replace
=== RUN TestAccAppFabric_serial/AppBundle/tags/null
=== RUN TestAccAppFabric_serial/AppBundle/tags/EmptyTag_OnCreate
=== RUN TestAccAppFabric_serial/AppBundle/tags/EmptyTag_OnUpdate_Replace
=== RUN TestAccAppFabric_serial/AppBundle/tags/DefaultTags_nonOverlapping
=== RUN TestAccAppFabric_serial/AppBundle/tags/ComputedTag_OnUpdate_Add
=== RUN TestAccAppFabric_serial/AppBundle/tags/IgnoreTags_Overlap_ResourceTag
=== RUN TestAccAppFabric_serial/AppBundle/tags/basic
=== RUN TestAccAppFabric_serial/AppBundle/tags/DefaultTags_updateToProviderOnly
=== RUN TestAccAppFabric_serial/AppBundle/tags/DefaultTags_nullNonOverlappingResourceTag
=== RUN TestAccAppFabric_serial/AppBundle/tags/IgnoreTags_Overlap_DefaultTag
=== RUN TestAccAppFabric_serial/AppBundle/tags/DefaultTags_overlapping
=== RUN TestAccAppFabric_serial/AppBundle/tags/DefaultTags_nullOverlappingResourceTag
=== RUN TestAccAppFabric_serial/AppBundle/regionCreateNull
=== RUN TestAccAppFabric_serial/AppBundle/regionCreateNonNull
=== RUN TestAccAppFabric_serial/AppBundle/upgradeFromV5WithUpdatePlanRefreshFalse
=== RUN TestAccAppFabric_serial/AppBundle/Identity
=== RUN TestAccAppFabric_serial/AppBundle/Identity/basic
=== RUN TestAccAppFabric_serial/AppBundle/Identity/ExistingResource
=== RUN TestAccAppFabric_serial/AppBundle/Identity/RegionOverride
=== RUN TestAccAppFabric_serial/AppBundle/disappears
=== RUN TestAccAppFabric_serial/AppBundle/upgradeFromV5
--- PASS: TestAccAppFabric_serial (980.41s)
--- PASS: TestAccAppFabric_serial/AppBundle (980.41s)
--- PASS: TestAccAppFabric_serial/AppBundle/upgradeFromV5PlanRefreshFalse (52.55s)
--- PASS: TestAccAppFabric_serial/AppBundle/upgradeFromV5WithDefaultRegionRefreshFalse (54.69s)
--- PASS: TestAccAppFabric_serial/AppBundle/upgradeFromV5WithNewRegionRefreshFalse (63.13s)
--- PASS: TestAccAppFabric_serial/AppBundle/basic (20.72s)
--- PASS: TestAccAppFabric_serial/AppBundle/cmk (46.61s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags (415.84s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/EmptyMap (10.64s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/AddOnUpdate (17.20s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/EmptyTag_OnUpdate_Add (25.82s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/DefaultTags_providerOnly (38.03s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/DefaultTags_updateToResourceOnly (17.13s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/DefaultTags_emptyResourceTag (11.20s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/ComputedTag_OnCreate (14.55s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/ComputedTag_OnUpdate_Replace (20.74s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/null (10.61s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/EmptyTag_OnCreate (19.37s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/EmptyTag_OnUpdate_Replace (17.29s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/DefaultTags_nonOverlapping (29.07s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/ComputedTag_OnUpdate_Add (21.30s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/IgnoreTags_Overlap_ResourceTag (24.47s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/basic (37.16s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/DefaultTags_updateToProviderOnly (17.72s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/DefaultTags_nullNonOverlappingResourceTag (11.13s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/IgnoreTags_Overlap_DefaultTag (22.04s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/DefaultTags_overlapping (29.21s)
--- PASS: TestAccAppFabric_serial/AppBundle/tags/DefaultTags_nullOverlappingResourceTag (11.16s)
--- PASS: TestAccAppFabric_serial/AppBundle/regionCreateNull (41.01s)
--- PASS: TestAccAppFabric_serial/AppBundle/regionCreateNonNull (32.02s)
--- PASS: TestAccAppFabric_serial/AppBundle/upgradeFromV5WithUpdatePlanRefreshFalse (59.13s)
--- PASS: TestAccAppFabric_serial/AppBundle/Identity (121.58s)
--- PASS: TestAccAppFabric_serial/AppBundle/Identity/basic (15.79s)
--- PASS: TestAccAppFabric_serial/AppBundle/Identity/ExistingResource (75.66s)
--- PASS: TestAccAppFabric_serial/AppBundle/Identity/RegionOverride (20.13s)
--- PASS: TestAccAppFabric_serial/AppBundle/disappears (18.33s)
--- PASS: TestAccAppFabric_serial/AppBundle/upgradeFromV5 (54.79s)
PASS
ok github.com/hashicorp/terraform-provider-aws/internal/service/appfabric 985.515s% make testacc TESTARGS='-short -run=TestAccVPC_' PKG=ec2 ACCTEST_PARALLELISM=4
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.24.5 test ./internal/service/ec2/... -v -count 1 -parallel 4 -short -run=TestAccVPC_ -timeout 360m -vet=off
2025/08/01 15:49:53 Creating Terraform AWS Provider (SDKv2-style)...
2025/08/01 15:49:53 Initializing Terraform AWS Provider (SDKv2-style)...
=== RUN TestAccVPC_basic
=== PAUSE TestAccVPC_basic
=== RUN TestAccVPC_disappears
=== PAUSE TestAccVPC_disappears
=== RUN TestAccVPC_DynamicResourceTagsMergedWithLocals_ignoreChanges
=== PAUSE TestAccVPC_DynamicResourceTagsMergedWithLocals_ignoreChanges
=== RUN TestAccVPC_DynamicResourceTags_ignoreChanges
=== PAUSE TestAccVPC_DynamicResourceTags_ignoreChanges
=== RUN TestAccVPC_tags_defaultAndIgnoreTags
=== PAUSE TestAccVPC_tags_defaultAndIgnoreTags
=== RUN TestAccVPC_tags_ignoreTags
=== PAUSE TestAccVPC_tags_ignoreTags
=== RUN TestAccVPC_tenancy
=== PAUSE TestAccVPC_tenancy
=== RUN TestAccVPC_updateDNSHostnames
=== PAUSE TestAccVPC_updateDNSHostnames
=== RUN TestAccVPC_bothDNSOptionsSet
=== PAUSE TestAccVPC_bothDNSOptionsSet
=== RUN TestAccVPC_disabledDNSSupport
=== PAUSE TestAccVPC_disabledDNSSupport
=== RUN TestAccVPC_enableNetworkAddressUsageMetrics
=== PAUSE TestAccVPC_enableNetworkAddressUsageMetrics
=== RUN TestAccVPC_assignGeneratedIPv6CIDRBlock
=== PAUSE TestAccVPC_assignGeneratedIPv6CIDRBlock
=== RUN TestAccVPC_assignGeneratedIPv6CIDRBlockWithNetworkBorderGroup
=== PAUSE TestAccVPC_assignGeneratedIPv6CIDRBlockWithNetworkBorderGroup
=== RUN TestAccVPC_IPAMIPv4BasicNetmask
vpc_test.go:606: skipping long-running test in short mode
--- SKIP: TestAccVPC_IPAMIPv4BasicNetmask (0.00s)
=== RUN TestAccVPC_IPAMIPv4BasicExplicitCIDR
vpc_test.go:633: skipping long-running test in short mode
--- SKIP: TestAccVPC_IPAMIPv4BasicExplicitCIDR (0.00s)
=== RUN TestAccVPC_IPAMIPv6
vpc_test.go:661: skipping long-running test in short mode
--- SKIP: TestAccVPC_IPAMIPv6 (0.00s)
=== RUN TestAccVPC_upgradeFromV5
=== PAUSE TestAccVPC_upgradeFromV5
=== RUN TestAccVPC_upgradeFromV5PlanRefreshFalse
=== PAUSE TestAccVPC_upgradeFromV5PlanRefreshFalse
=== RUN TestAccVPC_upgradeFromV5WithUpdatePlanRefreshFalse
=== PAUSE TestAccVPC_upgradeFromV5WithUpdatePlanRefreshFalse
=== RUN TestAccVPC_upgradeFromV5WithDefaultRegionRefreshFalse
=== PAUSE TestAccVPC_upgradeFromV5WithDefaultRegionRefreshFalse
=== RUN TestAccVPC_upgradeFromV5WithNewRegionRefreshFalse
=== PAUSE TestAccVPC_upgradeFromV5WithNewRegionRefreshFalse
=== RUN TestAccVPC_regionCreateNull
=== PAUSE TestAccVPC_regionCreateNull
=== RUN TestAccVPC_regionCreateNonNull
=== PAUSE TestAccVPC_regionCreateNonNull
=== CONT TestAccVPC_basic
=== CONT TestAccVPC_enableNetworkAddressUsageMetrics
=== CONT TestAccVPC_upgradeFromV5WithUpdatePlanRefreshFalse
=== CONT TestAccVPC_regionCreateNonNull
--- PASS: TestAccVPC_basic (19.02s)
=== CONT TestAccVPC_upgradeFromV5WithDefaultRegionRefreshFalse
--- PASS: TestAccVPC_enableNetworkAddressUsageMetrics (30.15s)
=== CONT TestAccVPC_regionCreateNull
--- PASS: TestAccVPC_regionCreateNonNull (36.53s)
=== CONT TestAccVPC_upgradeFromV5
--- PASS: TestAccVPC_upgradeFromV5WithUpdatePlanRefreshFalse (52.36s)
=== CONT TestAccVPC_upgradeFromV5PlanRefreshFalse
--- PASS: TestAccVPC_upgradeFromV5WithDefaultRegionRefreshFalse (52.43s)
=== CONT TestAccVPC_tags_ignoreTags
--- PASS: TestAccVPC_regionCreateNull (50.59s)
=== CONT TestAccVPC_disabledDNSSupport
--- PASS: TestAccVPC_upgradeFromV5 (52.41s)
=== CONT TestAccVPC_bothDNSOptionsSet
=== CONT TestAccVPC_updateDNSHostnames
--- PASS: TestAccVPC_upgradeFromV5PlanRefreshFalse (50.22s)
--- PASS: TestAccVPC_tags_ignoreTags (33.22s)
=== CONT TestAccVPC_tenancy
--- PASS: TestAccVPC_disabledDNSSupport (27.28s)
=== CONT TestAccVPC_DynamicResourceTags_ignoreChanges
--- PASS: TestAccVPC_bothDNSOptionsSet (27.89s)
=== CONT TestAccVPC_upgradeFromV5WithNewRegionRefreshFalse
--- PASS: TestAccVPC_DynamicResourceTags_ignoreChanges (28.41s)
=== CONT TestAccVPC_tags_defaultAndIgnoreTags
--- PASS: TestAccVPC_updateDNSHostnames (34.86s)
=== CONT TestAccVPC_DynamicResourceTagsMergedWithLocals_ignoreChanges
--- PASS: TestAccVPC_tenancy (44.91s)
=== CONT TestAccVPC_assignGeneratedIPv6CIDRBlockWithNetworkBorderGroup
--- PASS: TestAccVPC_DynamicResourceTagsMergedWithLocals_ignoreChanges (27.31s)
=== CONT TestAccVPC_disappears
=== CONT TestAccVPC_assignGeneratedIPv6CIDRBlock
--- PASS: TestAccVPC_upgradeFromV5WithNewRegionRefreshFalse (49.68s)
--- PASS: TestAccVPC_tags_defaultAndIgnoreTags (33.09s)
--- PASS: TestAccVPC_disappears (13.55s)
--- PASS: TestAccVPC_assignGeneratedIPv6CIDRBlockWithNetworkBorderGroup (61.59s)
--- PASS: TestAccVPC_assignGeneratedIPv6CIDRBlock (69.97s)
PASS
ok github.com/hashicorp/terraform-provider-aws/internal/service/ec2 241.803s|
@marcinbelczewski Thanks for the contribution 🎉 👏. |
|
Warning This Issue has been closed, meaning that any additional comments are much easier for the maintainers to miss. Please assume that the maintainers will not see them. Ongoing conversations amongst community members are welcome, however, the issue will be locked after 30 days. Moving conversations to another venue, such as the AWS Provider forum, is recommended. If you have additional concerns, please open a new issue, referencing this one where needed. |
|
I faced the same issue in 6.7 |
|
This functionality has been released in v6.8.0 of the Terraform AWS Provider. Please see the Terraform documentation on provider versioning or reach out if you need any assistance upgrading. For further feature requests or bug reports with this functionality, please create a new GitHub issue following the template. Thank you! |
|
I'm going to lock this pull request because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues. |
Rollback Plan
If a change needs to be reverted, we will publish an updated version of the library.
Changes to Security Controls
No changes to security controls (access controls, encryption, logging) in this pull request.
Description
Fixes
resourceSetRegionInStateInterceptorpreventing proper resource removal detection for Framework resources. The interceptor was setting region attributes on null state afterRemoveResource()was called, preventing Terraform from detecting disappeared resources correctly.Relations
Closes #43655.
Closes #43537.
Closes #43323.
Closes #43530.
References
plancheck.ExpectResourceActionwith_disappearsacceptance tests #42261 (improving "_disappears" test coverage) - this fix is a prerequisiteOutput from Acceptance Testing
This change affects internal provider framework functionality and is covered by unit tests. No acceptance tests are required as this is a low-level interceptor fix that doesn't change
resource behavior.