Skip to content

check for cancellation before apply confirmation#30979

Merged
jbardin merged 1 commit intomainfrom
jbardin/cancel-auto-approve
May 2, 2022
Merged

check for cancellation before apply confirmation#30979
jbardin merged 1 commit intomainfrom
jbardin/cancel-auto-approve

Conversation

@jbardin
Copy link
Copy Markdown
Member

@jbardin jbardin commented May 2, 2022

When executing an apply with no plan, it's possible for a cancellation
to arrive during the final batch of provider operations, resulting in no
errors in the plan. The run context was next checked during the
confirmation for apply, but in the case of -auto-approve that
confirmation is skipped, resulting in the canceled plan being applied.

Make sure we directly check for cancellation before confirming the plan.

Fixes #30918

When executing an apply with no plan, it's possible for a cancellation
to arrive during the final batch of provider operations, resulting in no
errors in the plan. The run context was next checked during the
confirmation for apply, but in the case of -auto-approve that
confirmation is skipped, resulting in the canceled plan being applied.

Make sure we directly check for cancellation before confirming the plan.
@jbardin jbardin added the 1.2-backport If you add this label to a PR before merging, backport-assistant will open a new PR once merged label May 2, 2022
@jbardin jbardin requested a review from a team May 2, 2022 18:09
@jbardin jbardin self-assigned this May 2, 2022
Copy link
Copy Markdown
Contributor

@alisdair alisdair left a comment

Choose a reason for hiding this comment

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

Fix makes sense to me, one question/worry about the test inline (which might be nothing).

testHookStopPlanApply = cancel
defer func() {
testHookStopPlanApply = nil
}()
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there any chance of this leaking into another parallel test and causing a mid-process cancel?

Copy link
Copy Markdown
Member Author

@jbardin jbardin May 2, 2022

Choose a reason for hiding this comment

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

Tests must be explicitly marked with t.Parallel() in order to run concurrently, so there should be no conflict there.

@jbardin jbardin merged commit 8079231 into main May 2, 2022
@jbardin jbardin deleted the jbardin/cancel-auto-approve branch May 2, 2022 21:14
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented May 2, 2022

Reminder for the merging maintainer: if this is a user-visible change, please update the changelog on the appropriate release branch.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jun 2, 2022

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 contributions.
If you have found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 2, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

1.2-backport If you add this label to a PR before merging, backport-assistant will open a new PR once merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

crtl-c shows "graceful" shutdown message, then long pause, then terraform still destroys resources

2 participants