Repository navigation
v1.1.1: workflow termination and execution identity
v1.1.1: workflow termination and execution identity
This maintenance update backports two Dapr 0.12 fixes onto
3c63ac32ce3df69ad616dfdc6a67ebe39e4341c9 without changing public interfaces,
protobuf definitions, or database schemas.
Workflow termination
Source: c1b1fb8d3694fba6c404d1fa54892d1eb12f3fff.
Termination remains effective when later events occur in the same work item,
while suspended, and when competing with ContinueAsNew. The Go executor stops
processing subsequent events and emits actions in sequence order. An earlier
terminal completion wins; ContinueAsNew cannot override termination. Applying
multiple completion actions does not duplicate the parent notification.
The runtime also enforces termination when a worker ignores it. The backport
additionally suppresses ContinueAsNew before it replaces the runtime history,
preserving the original execution identity and the child records needed for
recursive termination. A regression test covers both the parent notification
and a child routed to another application and namespace.
The upstream worker tests use the fork's context-taking StopAndDrain API.
Execution identity
Source: c4a98f73b12c22afc4af8b4248636305d78bda90.
The gRPC executor populates WorkflowRequest.ExecutionId from ExecutionStarted,
looking in new events before past events. Workers can distinguish generations
of the same instance while retaining stable identity during replay. Histories
without an execution ID continue to produce a nil value. The upstream test
import is adapted to github.com/mafilus/durabletask-go.
CI and scope
All 13 third-party action references in the four GitHub Actions workflows are
pinned to full upstream commit SHAs, retaining their existing major versions.
This update does not port the asynchronous worker architecture, early task
resolution handling, CompletionToken validation, or stream-disconnect recovery.
Those changes require a separate compatibility and transport reliability review.
Local validation (2026-09-09)
- Go 1.27.0-X:nodwarf5, PostgreSQL 17 in dedicated Docker containers.
go test -p 1 -count=1 -timeout=3m ./...passed with PostgreSQL enabled.- The PostgreSQL package suite and all five
TestIntegrationPostgresRestart
scenarios passed, including crash after commit before acknowledgement. - Targeted termination and execution-ID regressions,
go vet ./..., and
git diff --checkpassed. Independent review found no remaining findings.
An initial build lost its temporary directory under /tmp. A subsequent parallel
suite failed in an existing retry-timing test and the gRPC package; the retry
test passed 20 isolated repetitions, and the complete sequential run passed.
The cause of the initial gRPC failure was not established. These results are
local validation, not a GitHub Actions run or a published release.
Release verification
The runtime baseline e69d246f575e899700528027d927fbcf41f7b6b1 passed
PR Validation
and OpenTelemetry integration.
Release preparation changes only this note and the tag-triggered publication
workflow; the validated runtime is unchanged.