pulumi/pkg/engine
Fraser Waters 49d8298e84
Fix snapshot integrity on pending replacement (#17146)
This fixes a snapshot integrity issue with delete before replace, failed
creates, and multiple updates.

This was caused by https://github.com/pulumi/pulumi/pull/16510 where we
started removing pending replace resources as part of their replacement
steps. A well intentioned fix to stop trying to delete resources we'd
already deleted in a previous update.

The bug would manifest if the following happened:
1. An update goes to replace a resource with `deleteBeforeCreate` set.
It deletes the old resource (and saves the state as pending replace) but
then failed to create the new replacement resource.
2. A second update is run to try and create the replacement resource. At
this point the bug manifest and we delete the pending replace resource
from state, but then if the new resource fails to create again we end up
with an invalid snapshot.

The fix is very simple. If a resource is already pending replacement we
just don't issue a delete/remove step at all. The pending replace
resource will get cleaned up at the end by the create step creating the
new version.

Fixes #17111
Fixes #17073
Fixes #17070
Fixes #17069
Fixes #16916
2024-09-04 10:52:43 +00:00
..
lifecycletest Fix snapshot integrity on pending replacement (#17146) 2024-09-04 10:52:43 +00:00
combinedManager.go Test SnapshotManager and Journal in engine tests (#15871) 2024-04-11 22:54:08 +00:00
debugging.go implement the engine bits for debugging support (#17072) 2024-08-30 10:31:28 +00:00
deployment.go Use events to report downloads as system messages (#17019) 2024-09-03 12:12:04 +00:00
deployment_test.go Clean up deployment options (#16357) 2024-06-11 13:37:57 +00:00
destroy.go Use events to report downloads as system messages (#17019) 2024-09-03 12:12:04 +00:00
detailedDiff.go Change `pulumi refresh` to report diff relative to desired state instead of relative to only output changes (#16146) 2024-06-12 16:17:05 +00:00
detailedDiff_test.go Change `pulumi refresh` to report diff relative to desired state instead of relative to only output changes (#16146) 2024-06-12 16:17:05 +00:00
doc.go Document Go packages (#6009) 2021-01-11 11:07:59 -07:00
engine.go [breaking] Changing the version of go.mod in sdk / pkg to be v3 2021-04-14 19:32:18 +01:00
errors.go Centralise human-friendly error handling in the CLI (#17046) 2024-08-23 08:48:42 +00:00
events.go Use events to report downloads as system messages (#17019) 2024-09-03 12:12:04 +00:00
events_test.go Do not panic when sending events to closed emitter (#10489) 2022-08-25 12:43:10 -04:00
eventsink.go turn on the golangci-lint exhaustive linter (#15028) 2024-01-17 16:50:41 +00:00
import.go Clean up deployment options (#16357) 2024-06-11 13:37:57 +00:00
journal.go turn on the golangci-lint exhaustive linter (#15028) 2024-01-17 16:50:41 +00:00
plugin_host.go [conformance tests] Fix run root and use program info everywhere (#15191) 2024-01-25 23:28:58 +00:00
plugins.go Use events to report downloads as system messages (#17019) 2024-09-03 12:12:04 +00:00
plugins_test.go Refactor: move plugin kind to apitype (#15946) 2024-04-25 17:30:30 +00:00
progress.go Use events to report downloads as system messages (#17019) 2024-09-03 12:12:04 +00:00
progress_test.go Use events to report downloads as system messages (#17019) 2024-09-03 12:12:04 +00:00
project.go Update error handling (#8406) 2021-11-12 18:37:17 -08:00
query.go Use events to report downloads as system messages (#17019) 2024-09-03 12:12:04 +00:00
refresh.go Use events to report downloads as system messages (#17019) 2024-09-03 12:12:04 +00:00
snapshot.go [breaking] Changing the version of go.mod in sdk / pkg to be v3 2021-04-14 19:32:18 +01:00
update.go debugging: more consistency for naming (#17152) 2024-09-04 10:36:45 +00:00
update_test.go turn on the golangci-lint exhaustive linter (#15028) 2024-01-17 16:50:41 +00:00