pulumi/pkg/backend/display
Will Jones 98d7246ea8
Don't rewrite step operations following failure (#16292)
When displaying the progress of a Pulumi operation to the user, we want
the operation being displayed to reflect what is actually happening at
that moment in time. Most of the time, this means "just display the
operation in question" -- if a `create` is being executed, show
"creating", if a `delete` just completed, show "deleted", and so on.
However, there are cases where we can do better than just displaying the
"raw" operation. Specifically, our "replacement-like" operations
comprise a _series_ of steps that must execute for the operation as a
whole to make sense. For create-before-replace, we have:

* `create replacement` resource
* `replace` the old resource
* `delete original` resource

Other sequences, such as delete-before-replace, are similar (in the case
of delete-before-replace, the `delete original` step comes first).

While it might make sense to display the underlying steps as the
operation progresses, when the series of steps has _completed_, it's
(arguably) much clearer to simply render the string `replaced` so that
the user knows what has gone on. Similarly, during a preview, it (again
arguably) makes more sense for us to state that the intention is to
`replace`, rather than any one of `create replacement`/`replace`/`delete
original` and so on.

Alas, there is a case where this is potentially misleading and thus
undesirable behaviour. If an _error_ occurs during execution, the
operation will terminate at the next opportunity. In doing so, it will
enter a "done" state. At this point, we _do not_ want to rewrite the
step that was actually happening before the error interrupted it (e.g.
`create replacement`) with the "end" state (e.g. `replaced`), since the
error may mean we never reached that desired state. We want the display
to be as true to the raw series of steps as possible. This PR implements
this change, so that programs which terminate due to errors do not
rewrite their steps.

This PR addresses some of the confusion in #16270, in which we
incorrectly reported that a delete-before-replace resource had been
`replaced` when in fact we had only completed the deletion before being
interrupted by an error elsewhere.
2024-05-31 10:48:07 +00:00
..
internal/terminal Add vim shortcuts and Home and End Keys to terminal (#15418) 2024-02-24 08:31:36 +00:00
testdata Don't rewrite step operations following failure (#16292) 2024-05-31 10:48:07 +00:00
wasm [display] Enable WASM compilation (#16246) 2024-05-24 20:27:56 +00:00
diff.go Never show property diffs for OpSame (#16024) 2024-05-02 12:28:43 +00:00
diff_test.go Fix JSON/YAML diffs (#15171) 2024-01-18 14:19:54 +00:00
display.go display: only hide replacement steps in diff (#16065) 2024-04-26 14:54:21 +00:00
doc.go Document Go packages (#6009) 2021-01-11 11:07:59 -07:00
events.go be consistent in the way we round seconds (#16070) 2024-04-29 08:46:36 +00:00
events_test.go Don't omit an empty detailedDiff (#15213) 2024-01-23 00:00:14 +00:00
json.go Lift context parameter to SerializeDeployment/Resource/Operations/Properties (#15929) 2024-04-15 07:45:46 +00:00
jsonmessage.go Decouple persist and display events (#15709) 2024-03-18 16:53:13 +00:00
object_diff.go Fix mangled diffs of strings containing url-encoded chars (#16147) 2024-05-08 08:23:40 +00:00
object_diff_test.go Fix a panic in diff display when parsing YAML strings (#14710) 2023-12-02 01:24:13 +00:00
options.go Add display to the engine tests (#16050) 2024-05-13 07:18:25 +00:00
progress.go Don't rewrite step operations following failure (#16292) 2024-05-31 10:48:07 +00:00
progress_test.go Add display to the engine tests (#16050) 2024-05-13 07:18:25 +00:00
query.go Add `--suppress-progresss` flag to CLI (#14690) 2024-02-05 11:48:10 +00:00
rows.go Never show property diffs for OpSame (#16024) 2024-05-02 12:28:43 +00:00
sigint_unix.go [cli] Reimplement the interactive renderer 2022-11-07 22:02:44 -08:00
sigint_windows.go [cli] Reimplement the interactive renderer 2022-11-07 22:02:44 -08:00
tableutil.go [color] Use graphemes to measure strings. 2022-11-09 08:23:00 -08:00
tree.go Add display to the engine tests (#16050) 2024-05-13 07:18:25 +00:00
tree_test.go fix deadlock in stopwatch mutex (#16129) 2024-05-06 16:28:18 +00:00
watch.go turn on the golangci-lint exhaustive linter (#15028) 2024-01-17 16:50:41 +00:00