Releases: Azure/azure-functions-durable-extension
WebJobs.Extensions.DurableTask v3.12.2
What's Changed
- Lightweight Scale Controller package for Azure Storage backend by @nytian in #3357
- Update Microsoft.Extensions.Azure package to version 1.13.1 by @bachuv in #3385
- Add another platform exception type to OutOfProcMiddleware by @sophiatev in #3383
- Fix CVE-2026-26127 by @bachuv in #3388
Full Changelog: v3.12.1...v3.12.2
Worker.Extensions.DurableTask v1.16.2
What's Changed
- Lightweight Scale Controller package for Azure Storage backend by @nytian in #3357
- Update Microsoft.Extensions.Azure package to version 1.13.1 by @bachuv in #3385
- Add another platform exception type to OutOfProcMiddleware by @sophiatev in #3383
- Fix CVE-2026-26127 by @bachuv in #3388
Full Changelog: v1.16.1-worker-extension...v1.16.2-worker-extension
WebJobs.Extensions.DurableTask v3.12.1
Dependency Updates
Microsoft.Azure.DurableTask.AzureStorage v2.8.1 --> v2.8.2
Full Changelog: v3.12.0...v3.12.1
Worker.Extensions.DurableTask v1.16.1
Dependency Updates
Microsoft.Azure.DurableTask.AzureStorage v2.8.1 --> v2.8.2
Full Changelog: v1.16.0-worker-extension...v1.16.1-worker-extension
WebJobs.Extensions.DurableTask v3.12.0
What's Changed
- Add support for dedupe statuses in isolated by @sophiatev in #3316
- Fix CVE issues by @bachuv in #3371
- Dispose DurableTaskTriggersScaleProvider to prevent Azure Managed provider leaks by @nytian in #3373
- Fix CVE 2021-24112 by @bachuv in #3376
NOTICE OF BREAKING CHANGE
This release adds support for dedupe statuses in isolated. As part of this change, if an orchestration in a non-terminal state exists with the same instance ID as passed to the creation request, and its status is not in the dedupe statuses of the request, then the orchestration will first be terminated before a new one is created. Previously, the creation request would just go through without any termination. Note that in this repo, the DurableTaskOptions.OverridableExistingInstanceStates setting is used in all creation paths (the TaskHubGrpcServer, HttpApiHandler, and the DurableClient) as a base for determining the dedupe statuses, in combination with any user-provided dedupe statuses. In particular, the default value for this setting is OverridableStates.NonRunningStates, so unless this is manually changed to OverridableStates.AnyState, the creation request will throw an OrchestrationAlreadyExistsException (which may be wrapped by the various callers) if an orchestration in a non-terminal state is found with the same instance ID. This behavior remains unchanged by this release.
Similarly, previously the DurableClient.RestartAsync API would throw an InvalidOperationException if restartWithNewInstanceId is false and the existing orchestration is in a non-terminal state. Now, if the DurableTaskOptions.OverridableExistingInstanceStates setting is set to OverridableStates.AnyState, the restart call will first terminate the existing orchestration before creating a new one. The default value for this setting, if not changed by the user, is OverridableStates.NonRunningStates, in which case the DurableClient.RestartAsync API throws an OrchestrationAlreadyExistsException if the orchestration is in a non-terminal state. This means that the default behavior still results in an exception being thrown if the orchestration is in a non-terminal state and restartWithNewInstanceId is false - the exception has changed from InvalidOperationException to OrchestrationAlreadyExistsException, which may be wrapped by the various callers (namely the TaskHubGrpcServer and HttpApiHandler).
Full Changelog: v3.11.0...v3.12.0
Worker.Extensions.DurableTask v1.16.0
What's Changed
- Add support for dedupe statuses in isolated by @sophiatev in #3316
NOTICE OF BREAKING CHANGE
This release adds support for dedupe statuses in isolated. As part of this change, if an orchestration in a non-terminal state exists with the same instance ID as passed to the creation request, and its status is not in the dedupe statuses of the request, then the orchestration will first be terminated before a new one is created. Previously, the creation request would just go through without any termination. Note that in this repo, the DurableTaskOptions.OverridableExistingInstanceStates setting is used in all creation paths (the TaskHubGrpcServer, HttpApiHandler, and the DurableClient) as a base for determining the dedupe statuses, in combination with any user-provided dedupe statuses. In particular, the default value for this setting is OverridableStates.NonRunningStates, so unless this is manually changed to OverridableStates.AnyState, the creation request will throw an OrchestrationAlreadyExistsException (which may be wrapped by the various callers) if an orchestration in a non-terminal state is found with the same instance ID. This behavior remains unchanged by this release.
Similarly, previously the DurableClient.RestartAsync API would throw an InvalidOperationException if restartWithNewInstanceId is false and the existing orchestration is in a non-terminal state. Now, if the DurableTaskOptions.OverridableExistingInstanceStates setting is set to OverridableStates.AnyState, the restart call will first terminate the existing orchestration before creating a new one. The default value for this setting, if not changed by the user, is OverridableStates.NonRunningStates, in which case the DurableClient.RestartAsync API throws an OrchestrationAlreadyExistsException if the orchestration is in a non-terminal state. This means that the default behavior still results in an exception being thrown if the orchestration is in a non-terminal state and restartWithNewInstanceId is false - the exception has changed from InvalidOperationException to OrchestrationAlreadyExistsException, which may be wrapped by the various callers (namely the TaskHubGrpcServer and HttpApiHandler).
Full Changelog: v1.15.0-worker-extension...v1.16.0-worker-extension
WebJobs.Extensions.DurableTask v3.11.0
What's Changed
- Fix ArgumentNullException when ControlQueueLengths is null in Durable… by @alrod in #3339
- Fix thread-safety race condition in EnsureTaskHubWorker by @torosent in #3351
- Update dependencies to fix CVE issues by @bachuv in #3350
- Update projects to target .NET 10.0 alongside .NET 8.0 by @bachuv in #3333
- Add InvalidOperationException to platform error checks in OutOfProcMiddleware by @bachuv in #3355
- Bump dotnet-sdk from 10.0.102 to 10.0.103 by @dependabot[bot] in #3358
Full Changelog: v3.10.1...v3.11.0
Worker.Extensions.DurableTask v1.15.0
What's Changed
- Update dependencies to fix CVE issues by @bachuv in #3350
- Update projects to target .NET 10.0 alongside .NET 8.0 by @bachuv in #3333
- Add InvalidOperationException to platform error checks in OutOfProcMiddleware by @bachuv in #3355
- Bump dotnet-sdk from 10.0.102 to 10.0.103 by @dependabot[bot] in #3358
Note: If you see a startup error that contains TypeLoadException: Microsoft.ApplicationInsights (Version 3.0.0.1), this is caused by mismatched Application Insights package versions. Workarounds:
- Align all Application Insights packages to compatible versions.
- If you are using Microsoft.ApplicationInsights.WorkerService to v3, then remove the call to ConfigureFunctionsApplicationInsights() from Program.cs (if possible)
- Keep all Application Insights dependencies on compatible v2 versions.
This issue is not related to DurableTask or .NET version changes.
Full Changelog: v1.14.1-worker-extension...v1.15.0-worker-extension
WebJobs.Extensions.DurableTask v3.10.1
https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask/3.10.1
What's Changed
- Add FunctionInvocationId correlation for client operations by @cgillum in #3326
- Support Tags when RestartInstance by @nytian in #3331
Full Changelog: v3.10.0...v3.10.1
Worker.Extensions.DurableTask v1.14.1
https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.DurableTask/1.14.1
What's Changed
- Add FunctionInvocationId correlation for client operations by @cgillum in #3326
- Support Tags when RestartInstance by @nytian in #3331
Full Changelog: v1.14.0-worker-extension...v1.14.1-worker-extension