💥 Workflow delete now prompts for confirmation - #1029
Conversation
|
|
| return err | ||
| } else if exec != nil { | ||
| _, err := cl.WorkflowService().DeleteWorkflowExecution(cctx, &workflowservice.DeleteWorkflowExecutionRequest{ | ||
| yes, err := cctx.promptYes(workflowDeleteSingleConfirmationMessage(exec), c.Yes) |
There was a problem hiding this comment.
Prompting would be a breaking change if used in a script. Can you follow this in the PR title/description?
Breaking changes must be treated with high review rigor, marked with 💥 (:boom:) in commit messages and the PR title/description, and called out with 💥 in the release notes with a clear explanation.
FYI we're in process of standardizing this
| defer cl.Close() | ||
|
|
||
| exec, batchReq, err := c.workflowExecOrBatch(cctx, c.Parent.Namespace, cl, singleOrBatchOverrides{}) | ||
| cctx.Printer.Println(workflowDeleteWarning) |
There was a problem hiding this comment.
This will print for all namespace types including non-global ones. I'd suggest either
- Making the message more specific, i.e. "WARNING: If this Namespace is global, deleting Workflow Executions in the namespace removes them ..."
- Or better UX at the cost of extra RPC: Call DescribeNamespace, check GetIsGlobalNamespace and print warning conditionally
There was a problem hiding this comment.
+1 on this, would it be possible to show this warning only for replicated users in a easier way? Users running a single cluster might be confused with this warning.
There was a problem hiding this comment.
Good point! Updated to check on global namespace.
| return nil | ||
| } | ||
|
|
||
| func workflowDeleteConfirmationMessage(action string) string { |
There was a problem hiding this comment.
nit: we can just inline this
| defer cl.Close() | ||
|
|
||
| exec, batchReq, err := c.workflowExecOrBatch(cctx, c.Parent.Namespace, cl, singleOrBatchOverrides{}) | ||
| cctx.Printer.Println(workflowDeleteWarning) |
There was a problem hiding this comment.
Currently the warning goes to stdout, so --output json callers get a non-JSON line with their output. Send to stderr for warnings:
| cctx.Printer.Println(workflowDeleteWarning) | |
| fmt.Fprintln(cctx.Options.Stderr, workflowDeleteWarning) |
Single-workflow `temporal workflow delete` now requires interactive confirmation (or `--yes`/`-y`). Scripts that previously relied on the command running non-interactively will break unless they pass `--yes`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…#1104) ## Summary Backports server-independent changes from `main` into `release/1.8.x`. Every commit here was verified to build and pass codegen against the release line's current dependency pins (`server v1.31.0`, `sdk v1.41.1`, `api v1.62.8`) — nothing pulls in the newer server/SDK/API that landed on `main` via #1017. Scope agreed as: bug fixes + CLI changes + CI/tooling. Dependency bumps (#1040, #1052, #1063) and server-version-dependent features are intentionally excluded. ## Included (22 commits, cherry-picked with `-x`) **CLI / bug fixes** - #1006 Fix help with value flags (addresses #1003 — `--help` with value flags like `--address 123` surfaced `pflag: help requested` as an error) - #1012 skip CountWorkflow in batch operations when `--yes` is set - #1016 Sort output of listing search attributes - #1029 Workflow delete now prompts for confirmation - #1033 Add persistence info to start-dev banner - #1047 Add `temporal schedule list-matching-times` command - #1056 Fix task-queue config set help: use real fairness weight flag names - #1059 Prefix dev server cluster ID with `dev-server-` - #1089 fix: tls is not added for profiles without tls - #1099 Clarify activity pause timeout behavior - #941 auto-generate deprecation warnings from YAML config **Tests** - #1005 Fix flakey test by disabling EC2 metadata lookup - #1020 Remove `time.Sleep()` in commands.taskqueue_test.go **CI / tooling** - #1015 pin alpine docker image to 3.23.4 - #1024 remediate missing-dependency-cooldown - #1034 Bump actions/upload-artifact from 4 to 7 - #1044 improve dependabot config - #1045 add PR template - #1054 pin and bump GitHub Actions to latest versions - #1057 use allow instead of ignore for dependency-type in dependabot config - #1080 Bump the github-actions group with 2 updates ## Excluded (rely on the new server/SDK version) #1017 (server bump v1.31.0 -> v1.32.0-157.0), #1046, #1087, #1001, #1091, #1084 ## Verification - `go build ./...` passes - all test packages compile - `make gen` reports no codegen drift - server/sdk/api pins unchanged from `release/1.8.x` ## CI endpoint fix (added) Also backports the API-key CI test endpoint change from #1087 (`us-east-1` -> `ca-central-1`) as a standalone CI-only commit. This resolves the `Request unauthorized` failure in the "Test cloud API key" steps on `release/1.8.x`. The rest of #1087 (Nexus Operation command code) is excluded as it depends on the new server version. --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Sai Asish Y <say.apm35@gmail.com> Co-authored-by: Kevin Woo <3469532+kevinawoo@users.noreply.github.com> Co-authored-by: Rodrigo Zhou <rodrigo.zhou@temporal.io> Co-authored-by: Stephan Behnke <stephanos@users.noreply.github.com> Co-authored-by: Jiechen Zhong <jiechen.zhong@temporal.io> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Kent Gruber <kent.gruber@temporal.io> Co-authored-by: picatz <14850816+picatz@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Votta <jpvotta@gmail.com> Co-authored-by: Nasit Sarwar Sony <nasitsony96@gmail.com> Co-authored-by: hussam-salah <156124396+hussam-salah@users.noreply.github.com> Co-authored-by: Sai Asish Y <say.apm35@gmail.com> Co-authored-by: Bitalizer <23104115+bitalizer@users.noreply.github.com> Co-authored-by: Sean Kane <spkane31@gmail.com> Co-authored-by: Jessica Laughlin <JLDLaughlin@users.noreply.github.com>
What was changed
Added a warning to
temporal workflow deleteexplaining that deleting Workflow Executions in aglobal Namespace removes them from all replicas, and that requests sent to a passive cluster are forwarded to the active cluster by default unless
--grpc-meta xdc-redirection=falseis specified.Delete workflow now prompts for confirmation
Why?
The CLI should make that blast radius clear before users confirm deletion.
The passive-cluster note helps users who intentionally want to target a passive cluster avoid the default frontend forwarding behavior.
Checklist
Closes
How was this tested:
unit-test and local run.
single deletion
batch deletion