microsoft / microsoft/pg_durable
Cancelled workflows are recorded as Failed in duroxide.executions status
- Dominant language
- Rust
- Stars
- 2.8k
- Forks
- 80
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 32
Description
Summary
Cancelled workflows can be recorded as Failed in duroxide.executions.status, making cancellations indistinguishable from real failures when querying execution rows.
Expected behavior
Cancelled executions should have a distinct terminal status, such as Cancelled, so queries and dashboards can separate user-requested cancellation from failures.
At minimum, the status vocabulary exposed through df.status() and duroxide.executions.status should agree on terminal states, even if casing differs.
Actual behavior
After cancelling a workflow:
df.status(instance_id)can reportcancelled.- History events show cancellation details.
duroxide.executions.statusrecords the execution asFailed.
Repro shape
- Start a long-running workflow.
- Cancel it with
df.cancel(instance_id, reason). - Query
df.status(instance_id). - Query
duroxide.executions.statusfor the same instance. - Observe that the durable function status and execution status disagree on whether the terminal state is cancellation or failure.
Impact
Failure dashboards overcount real failures, retry logic can treat user cancellations as retryable failures, and consumers must inspect history payloads to identify cancellations.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.