Releases: Azure/azure-functions-durable-extension
Durable Functions Roslyn Analyzer v0.4.2
For more detailed information on the Durable Functions Roslyn Analyzer, see these release notes: https://github.com/Azure/azure-functions-durable-extension/releases/tag/Analyzer-v0.2.0
If you have any issues with or suggestions for the Durable Functions Analyzer, open an issue, I'd love to hear your feedback!
NuGet package
https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers
Bug Fixes
All changes in this PR ( #2057 )
- Fixed a stack overflow bug related to analyzing methods in other projects in our orchestrator deterministic checks.
- Fixed a bug occurring when diagnostics were attempted to be created in another project when analyzing methods related to our orchestrator deterministic checks.
Durable Functions v2.6.0 Release
Updates
- New
HttpRetryOptions
class for passing retry options toCallHttpAsync()
invocations to add & customize retry behavior - Added
HttpRetryOptions
toDurableHttpRequest
- set this property to use retry logic when you use theCallHttpAsync()
overload that takes the full object - Log trace events whenever entities are created or deleted
- Throw meaningful exceptions inside orchestrations when they try to call, signal, or lock a non-existing entity
- Fixed null reference exceptions thrown in DurableClient
Breaking Changes
IDurableOrchestrationContext
'sCallHttpAsync(HttpMethod, Uri, string)
overload now has aHttpRetryOptions
parameterIDurableActivityContext
now has a Name property.
Dependency Updates
Microsoft.Azure.DurableTask.AzureStorage --> 1.9.4
Microsoft.Azure.DurableTask.Core 2.5.6 --> 2.6.0
Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers 0.4.0 --> 0.4.1
DurableTask.AzureStorage Updates
v1.9.4
- Storage Refactor: Tables. Final portion of storage refactor work updating all Tables APIs. Blobs and Queues were updated in 1.9.0.
- Added global request throttling on concurrent storage requests to prevent performance related issues such as network port exhaustion.
- Fixed bug with OutOfOrderMessage checks that didn't previously consider SubOrchestrationCompleted events as out of order messages when being processed before the parent orchestration has written itself in history.
v1.9.3
- Added catch block in control queue dequeue loop to prevent unhandled exceptions from stopping the dequeue loop, improved logging around this scenario
v1.9.2 and v1.9.1
Release Notes (v1.9.2)
Release Notes (v1.9.1)
- Fix fetching of large inputs for pending orchestrations on Azure Storage
- Updated TableQuery filter condition string generation to resolve invalid character issues
- Fixed stuck orchestration with duplicate message warning issue
DurableTask.Core Updates
v2.6.0
- Add more robust determinism checks in orchestration replay logic
- Fix exception when Task returns void
DurableTask.Analyzers Updates
v0.4.1
- Added BindingAnalyzer to deterministic method checks, flagging all attributes used on parameters that are not OrchestrationTrigger to prevent using additional bindings on an Orchestrator method.
- Updated Entity InterfaceContentAnalyzer to avoid flagging entity interfaces that implement another interface.
- Fixed bug leading to ArgumentException with message "SyntaxTree is not part of the compilation" in deterministic method analyzers.
Durable Functions Roslyn Analyzer v0.4.1
For more detailed information on the Durable Functions Roslyn Analyzer, see these release notes: https://github.com/Azure/azure-functions-durable-extension/releases/tag/Analyzer-v0.2.0
If you have any issues with or suggestions for the Durable Functions Analyzer, open an issue, I'd love to hear your feedback!
NuGet package
https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers
Updates and Bug Fixes
All changes in this PR ( #1968 )
- Added BindingAnalyzer to deterministic method checks, flagging all attributes used on parameters that are not OrchestrationTrigger to prevent using additional bindings on an Orchestrator method.
- Updated Entity InterfaceContentAnalyzer to avoid flagging entity interfaces that implement another interface.
- Fixed bug leading to ArgumentException with message "SyntaxTree is not part of the compilation" in deterministic method analyzers.
Durable Functions v2.5.1 Release
Improvements
- Added the ability to provide custom connection string names when creating a DurableClient in an ASP.NET Core app (external app) (#1895)
- Added graceful handling of in-flight executions to immediately fail the instance when the function is deleted, disabled, or renamed. (#1901)
- Improved API documentation regarding uncancelled timers. (#1903)
Dependency Updates
DurableTask.AzureStorage --> 1.9.0
DurableTask.Core --> 2.5.6
- Storage Refactor: Blobs and Queues
- Refactored usage of Azure Storage APIs to allow for easier storage upgrades and set up for future work to set up a global throttling system. All Blobs and Queues operations have been updated. (Azure/durabletask#580)
- Fixed NullReferenceException in instance completion trace affecting release builds. (Azure/durabletask#560)
- Removed noisy warning logs related to listening to queues. (Azure/durabletask#586, Azure/durabletask#588)
- Improved performance in edge case of ExecutionStarted dedupe logic causing delayed processing of control queue messages. (Azure/durabletask#568)
- Fix message loss bug in ContinueAsNew scenarios. (Azure/durabletask#544)
Durable Functions v2.5.0
New Features
- Added new App Lease functionality to allow users to control when they want to swap their app to be the primary and take over the App Lease. This feature is controlled by the new .NET API
IDurableClient.MakeCurrentAppPrimaryAsync
and the new HTTP API/makeprimary
. This allows customers using the app lease feature to programmatically restore the primary app after a region failover without restarting their applications. (#1769 and DurableTask #529) - Multiple concurrent start requests to a singleton orchestration instance should now only start a single instance (DurableTask #528)
- A new preview experience for a typed experience in .NET to call Durable Activities and Orchestrations. The solution uses .NET source generators to generate new interfaces for
ITypedDurableOrchestrationContext
andITypedDurableClient
. The source generator looks at your source code for existing orchestrations and activities and creates new methods on these interfaces that have the correct method name, parameters and return type. See here for more details, and download the preview package on nuget.org.
General Improvements
- Improved supportability logs on Linux Dedicated plans (#1721)
- Improved concurrency defaults in Consumption plans for C# and JS (#1846)
- Initial work to simplify out-of-process execution model (#1836)
Bug fixes
- Fix issue with local RPC endpoint used by non-.NET languages on Windows apps (#1800)
- Emit warning instead of blocking startup if Distributed Tracing is enabled, but
APPINSIGHTS_INSTRUMENTATIONKEY
isn't set (#1787), - Assign cloud_RoleName and operation_Name fields to RequestTelemetry to populate Activity Function's Invocations List when Distributed Tracing is enabled (#1808)
- Fix Linux telemetry for new durability providers (#1848)
- Update dependencies to address CVE-2019-0548 and CVE-2021-26701 vulnerabilities (#1789)
Durable Functions v2.4.3 Release
NuGet Package
https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask/2.4.3
Bug Fixes:
- Undo accidental deletion of the ProviderUtils class (#1750)
Durable Functions v2.4.2 Release
NuGet Package
https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask/2.4.2
Improvements
- Added support to select a storage backend provider when multiple are installed. Select which storage backend to use by setting the
type
field underdurableTask/storageProvider
in host.json. If this field isn't set, then the storage backend will default to using Azure Storage. (#1702) - Improved concurrency defaults for the App Service Consumption plan (#1706)
Bug Fixes:
- Properly used update management API URLs after a successful slot swap on Functions V3 (#1716)
- Fix race condition when multiple apps start with local RPC endpoints on the same VM in parallel. (#1719)
- Fix CallHttpAsync() to throw an HttpRequestException instead of a serialization exception if the target endpoint doesn't exist (#1718)
Breaking changes
- Fix CallHttpAsync() to throw an HttpRequestException instead of a serialization exception if the target endpoint doesn't exist (#1718). This is a breaking change if you were handling
HttpRequestException
s by catchingFunctionFailedException
s.
Durable Functions v2.4.1 Release
NuGet Package
https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask/2.4.1
New Features
- Exposed IServiceCollection extension methods AddDurableTaskFactory() for net461 releases so classic .NET Framework apps using the .NET Core model of dependency injection can create their own Durable Clients. (#1653)
Improvements
- Removed incorrect information from C# docs summary for IDurableEntityClient.ReadEntityStateAsync() regarding states larger than 16KB (#1637)
- Fix a NullReferenceException in IDurableClient.SignalClient() for IDurableClient objects created by the new DurabilityClientFactory (#1644)
- Fixed compatibility issue with System.Reactive (#1620)
- [Performance] Reduced number of entity deserializations when entities are still loaded in memory (#1621)
- [DTFx] Retry operations on Storage SDK deadlocks instead of app recycle (Azure/durabletask#500)
- [DTFx] Fixed issue where orchestrations got stuck due to start/raise-event races (Azure/durabletask#497)
Dependency Changes
- Removed dependency on Mono.Posix.NETStandard by instead relying on P/Invoke to generate inotify signals in Linux; reducing the size of the package (#1643) - thanks @shibayan!
- Removed ApplicationInsights.DependencyCollector package (#1593) - thanks @shibayan!
- Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers --> 0.4.0 (#1648)
- Microsoft.Azure.DurableTask.AzureStorage --> 1.8.4 (#1655)
Durable Functions Roslyn Analyzer v0.4.0
For more detailed information on the Durable Functions Roslyn Analyzer, see these release notes: https://github.com/Azure/azure-functions-durable-extension/releases/tag/Analyzer-v0.2.0
If you have any issues with or suggestions for the Durable Functions Analyzer, open an issue, I'd love to hear your feedback!
NuGet package
https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers
Updates and Bug Fixes
All changes in this PR ( #1634 )
- Added CancellationTokenAnalyzer. This analyzer flags any CancellationToken used as a parameter in an orchestration trigger method. ( #1526 )
- Fixed a stack overflow exception when using mutually recursive methods. ( #1619 )
- CallActivity invocations are now analyzed in orchestrator trigger methods and methods used in orchestrator methods. ( #1402 )
- A best-effort attempt will now be made to include custom CallActivity extension methods in analysis to ensure the correct input is used. ( #1562 )
- Updated Task.ContinueWith analyzer to work on any task that doesn't use ExecuteSynchronously.
- Removed some of the custom messages that caused descriptions to be too long.
Durable Functions v2.4.0 Release
NuGet Package
https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask/2.4.0
New Features
Distributed Tracing (#1571)
One of the long running requests we have received from customers is a way to improve the observability of their orchestration execution. The new distributed tracing functionality correlates all of the operations performed by an orchestration so that a single query can give a clear representation of the work that an orchestration instance has accomplished.
This feature was previously released as a separate alpha package, but now it can be used in our mainline package simply by adding a few settings to your host.json.
This feature is still a work in progress as we add support for all operation, but we encourage developers to try out this new tracing model to get better visibility into their orchestrations. The new samples should provide guidance for how to set up your application to use Distributed Tracing, as well as adding your own custom telemetry.
Durable Clients in other .NET Core applications (#1125)
Before this release, the only way to perform management operations on orchestrations and entities was to use Azure Functions bindings to access an IDurableClient
or to use the built-in management HTTP APIs. Thanks to a contribution by @davidrevoledo, instances of IDurableClient
can be created in external ASP.NET Core, console, and Azure Functions applications via dependency injection!
Check out our new sample project for examples of how you can create these client instances in your own applications.
New API to Restart Orchestrations (#1545)
This release introduces a new API to restart orchestrations that may have failed or have terminated due to transient conditions. The restarted orchestration will use the same input as the original orchestration, and can reuse the instance id or use a new one.
This new API can be called with the C# method IDurableOrchestrationClient.RestartAsync(string instanceId, bool restartWithNewInstanceId)
as well as the HTTP API /instances/<instance-id>/restart
. Support for these APIs for Durable Functions apps running on Node and Python will be added in the near future with releases to each language's SDK.
Other features
- New Netherite Event Source Backend (#1541): Added extensibility support for a new event source backend. Expect to hear more about this new backend in the coming weeks.
- Added
BatchSize
andBatchPosition
properties toIDurableEntityContext
(#1511) - New
Timeout
Property for DurableHttpRequest (#1547): This property defines the timeout for each HTTP request. This timeout applies to each asynchronous polling request too. - Enable long running timers for WaitForExternalEvent (#1550)
Bug fixes
- Handle task hub worker shutdown when functions use the [Disable] attribute (#1546)
- Limiting Terminate and Rewind HTTP APIs to only accept HTTP POST requests as documented. (#1545)
- Added
IDurableEntityContext.DispatchAsync()
directly toIDurableEntityContext
interface to allow the method to be mockable using a unit test framework like Moq (recommended) (#1581)
Breaking changes
- Added a
bool returnInternalServerErrorOnFailure
parameter toWaitForCompletionOrCreateCheckStatusResponseAsync
(#1572): This optional parameter is added to handle the HttpResponse that is returned. The default value is false, which means it will return a 200 status code. If the value is true, then the response status code will be 500. This is a breaking change if you are using a unit test framework like Moq (recommended) that mocks theWaitForCompletionOrCreateCheckStatusResponseAsync
method. All that should be required is to account for the new parameter in your.Setup()
method.
Dependency Changes
- Updated nuget dependencies (#1577):
- Microsoft.Azure.WebJobs.Extensions.DurableTask --> 2.4.0
- Microsoft.Azure.DurableTask.AzureStorage --> 1.8.3
- Microsoft.Azure.DurableTask.Core --> 2.5.0