Repository navigation
v1.0.0-beta.1
This beta introduces a major update to the Durable Task SDK for Go, with Azure Durable Task Scheduler (DTS) as the only supported runtime, expanded workflow and entity capabilities, and new tooling and samples.
This SDK is in beta. This release contains breaking changes and is not a drop-in upgrade from v0.6.0.
Breaking changes
- DTS-only runtime: Embedded SQLite and PostgreSQL backends and the standalone gRPC host have been removed.
- New client and worker setup: Migrate to
durabletaskscheduler.NewClientanddurabletaskscheduler.NewWorker. The SDK runs your registered code while DTS owns durable state and work dispatch. - Go 1.25 or later is required. The module path remains
github.com/microsoft/durabletask-go; no version suffix is needed for v1.
The previous backend implementation remains available at the legacy-backends tag.
Highlights
- DTS connectivity and worker lifecycle: Connection-string configuration, Azure token authentication, independently owned client and worker connections, reconnect handling, concurrency controls, and graceful worker drain.
- Deterministic workflow primitives: Durable coroutines, cancellation scopes, wait groups, typed event channels, selection helpers, and long-timer splitting.
- Durable entities: Function-based, reflected, and factory-based models; calls and signals; scheduled signals; queries; and multi-entity critical sections.
- Management and routing: Versioned task registrations, automatic work-item filters, recurring interval schedules, restart, and rewind for supported histories.
- Payloads and observability: Custom data converters, large-payload storage including Azure Blob Storage, propagated tags and context fields, and OpenTelemetry integration.
- History and development tools: Public history retrieval and streaming APIs, bounded history export to Blob Storage, the
orchestratorvetreplay-hazard analyzer, and an expanded runnable sample catalogue.
Important beta limitations
- Cross-SDK entity locking: Go retains Python-compatible lock ordering. Do not concurrently acquire overlapping multi-entity lock sets from Go/Python and .NET orchestrations; their ordering differs and can cause deadlocks.
- Rewind is intentionally conservative: The Go worker rejects replacement history when additional non-lifecycle events follow a failed activity or child operation. This includes handled failures followed by more work, retry timers, and some concurrent histories. See the rewind guide.
Get started
go get github.com/microsoft/durabletask-go@v1.0.0-beta.1Start with the quick start, client and worker setup, and sample catalogue.
Full changelog: v0.6.0...v1.0.0-beta.1