microsoft / microsoft/pg_durable

Cancelled workflows are recorded as Failed in duroxide.executions status

Open
#170 2 comments 1 reaction 2 assignees View on GitHub

@pinodeca is already working on this.

Since May 27, 2026.

  • #179 by @copilot-swe-agent — open
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 report cancelled.
  • History events show cancellation details.
  • duroxide.executions.status records the execution as Failed.

Repro shape

  1. Start a long-running workflow.
  2. Cancel it with df.cancel(instance_id, reason).
  3. Query df.status(instance_id).
  4. Query duroxide.executions.status for the same instance.
  5. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.