github Azure/azure-functions-durable-extension v3.12.0
WebJobs.Extensions.DurableTask v3.12.0

latest release: v1.16.0-worker-extension
5 hours ago

What's Changed

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

Don't miss a new azure-functions-durable-extension release

NewReleases is sending notifications on new releases.