Fix early SIGINT not preventing subsequent operation execution #1
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.
Fixes hashicorp#31371
Description
When
Stop()is called before a Terraform Core operation starts (e.g., SIGINT during the 3-4 second window before state lock acquisition), the operation proceeds anyway. This is a race condition:Stop()checks for an activerunContextCancel, finds none, and does nothing. When the operation subsequently callsacquireRun(), it creates a fresh context unaware of the cancellation.Changes
Core fix: Create cancellation context at
Contextinitialization rather than per-operation.NewContext(): InitializerunContextandrunContextCancelat construction timeStop(): Always cancel the context (removed nil check that allowed race)acquireRun(): Check if context already cancelled; abort operation immediately if soreleaseRun(): Remove context lifecycle management (context persists forContextlifetime)TestContext2Plan_stopBeforeStartandTestContext2Apply_stopBeforeStartdemonstrating fixTarget Release
1.15.x
Rollback Plan
Changes to Security Controls
No changes to security controls.
CHANGELOG entry
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.