Skip to content

Releases: Azure/azure-functions-durable-extension

Durable Functions v2.4.2 Release

19 Mar 00:24
b34a369
Compare
Choose a tag to compare

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 under durableTask/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 HttpRequestExceptions by catching FunctionFailedExceptions.

Durable Functions v2.4.1 Release

25 Jan 18:32
678c5b0
Compare
Choose a tag to compare

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

16 Jan 01:06
06d84e1
Compare
Choose a tag to compare

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

01 Dec 01:14
a627810
Compare
Choose a tag to compare

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 and BatchPosition properties to IDurableEntityContext(#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 to IDurableEntityContext interface to allow the method to be mockable using a unit test framework like Moq (recommended) (#1581)

Breaking changes

  • Added a bool returnInternalServerErrorOnFailure parameter to WaitForCompletionOrCreateCheckStatusResponseAsync (#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 the WaitForCompletionOrCreateCheckStatusResponseAsync 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

Durable Functions v2.3.1 Release

22 Oct 19:18
e662e79
Compare
Choose a tag to compare

NuGet Package

https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask/2.3.1

What's new

  • Entity messages can be scheduled for times > 7 days in the future (#1475): Previously, entity messages could only be scheduled 6 days into the future due to limits on the Azure Storage queues. We now have logic to automatically handle messages scheduled greater than 7 days in the future.
  • New partition management strategy on by default (#1507): A new partition management strategy that reduces split brain was introduced in 2.3.0. This is now on by default, but can be turned off by setting extensions.durableTask.storageProvider.useLegacyPartitionManagement to true in the host.json.
  • Support for cleaning entity state for deleted entities (#1442): IDurableEntityClient.CleanEntityStorageAsync() is a new API that will remove empty entities from storage and clean up orphaned locks.

Bug fixes

  • Fix bug handling large inputs/outputs for orchestrations and activities (#1483)
  • Improved handling of Graph and ARM APIs in CallHttpAsync (#1485)
  • Gracefully handle the case where non-.NET languages set extendedSessionsEnabled: true (#1502)
  • Fix exception thrown by analyzer resulting in uncessary compile time warnings (#1494)
  • Fixed a typo that caused another ArgumentException in the DurableAnalyzer ( #1521 )

Misc.

  • Updated nuget dependencies:
    • Microsoft.Azure.WebJobs.Extensions.DurableTask --> 2.3.1
    • Microsoft.Azure.WebJobs.Extensions.Analyzers --> 0.3.2
    • Microsoft.Azure.DurableTask.AzureStorage --> 1.8.1
  • Improved telemetry sent to Azure support for Dedicated Linux Function Apps and Linux Consumption Function apps (#1482, #1515, #1522)

Durable Functions Roslyn Analyzer v0.3.2

07 Oct 19:44
1d1e47b
Compare
Choose a tag to compare

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

This is a patch release to the Durable Functions Roslyn Analyzer that contains a bug fix.

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

  • Fixed a typo that caused another ArgumentException ( #1521 )

Durable Functions Roslyn Analyzer v0.3.1

07 Oct 19:41
3b83ae8
Compare
Choose a tag to compare

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

This is a patch release to the Durable Functions Roslyn Analyzer that contains several bug fixes.

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 ( #1494 )

  • Fixed NullReferenceException when using Nullable types in FunctionAnalyzer
  • Fixed another ArgumentException related to SemanticModels
  • Added a new, more specific warning message in FunctionAnalyzer ArgumentAnalyzer when using null inputs for a value type.

Durable Functions v2.3.0 Release

26 Aug 18:04
7deb6d0
Compare
Choose a tag to compare

NuGet Package

https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask/2.3.0

What's new

  • AppLease settings for GeoRedundancy feature (#1431, #1128): By default, two apps with the same name will not be able to read messages from a task hub at the same time. This is primarily intended to make supporting geo-redundant deployments easier.
  • New partition management strategies (#1445): Enabled via a setting, switches to a new partition management strategy that eliminates the occasional duplicate function executions that occur when an application is scaled-out to additional instances.
  • Long running durable timers (#1390, #14): Durable timers were previously restricted to 6 days. This restriction has been removed and timers can be set for arbitrarily long durations.
  • Added TaskEventId to function traces (#1386, #1382): This change adds additional information to traces that allows you to distinguish multiple activity function calls in the same orchestration.
  • Adding DefaultAzureCredentialOptions to ManagedIdentityTokenSource() (#1407, #1279): Allows using Durable HTTP with managed identities in government clouds.
  • Durable Task Framework logging (#1426): You can now capture the lower-level logs emitted by the Durable Task Framework. This includes core engine logs (DurableTask.Core) and the Azure Storage provider logs (DurableTask.AzureStorage). See here for more information.

Bug fixes

  • Durable Entity signaling duplication at scale (#1417)
  • DurableHttpRequest Throws Exception When Content Is Supplied (#1344)
  • Traces with IsReplay=false not correctly filtered out in Application Insights (#1351) - contributed by @AtOMiCNebula!
  • Start orchestration cross function app (#1281)
  • ReadEntityStateAsync sometimes fails with HTTP 412 when calling Azure Storage (#1406)
  • Activity fail to correctly deserialize DateTimeOffset and lose the offset (#393, #934)
  • Millisecond field in ISO8601 string value is changed unexpectedly between starter and orchestrator (Azure/azure-functions-durable-js#208)

Misc.

  • Updated nuget dependencies (#1426):
    • Microsoft.Azure.WebJobs.Extensions.DurableTask --> 2.3.0
    • Microsoft.Azure.WebJobs.Extensions.Analyzers --> 0.3.0
    • Microsoft.Azure.DurableTask.AzureStorage --> 1.8.0
    • Microsoft.Azure.DurableTask.Core --> 2.4.1
  • Swapping Microsoft.Azure.Services.AppAuthentication nuget dependency for Azure.Identity (#1399)

Breaking changes

  • Improve unit testability of .NET interfaces (#1422): New methods were added to IDurableOrchestrationContext, IDurableOrchestrationClient, IDurableEntityContext, and IDurableEntityClient to make them easier to unit test. This is a breaking change if you have custom implementations of these interfaces in your unit test code. If you are using a unit test framework like Moq (recommended) that can automatically implement interfaces, then this is a non-breaking change.

Durable Functions Roslyn Analyzer v0.3.0

06 Aug 15:37
8656746
Compare
Choose a tag to compare

Durable Functions Roslyn Analyzer v0.3.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

This is a patch release to the Durable Functions Roslyn Analyzer that contains several bug fixes.

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 ( #1394 )

  • Fixed FunctionAnalyzer type comparison bug that did not correctly compare Tuples and type arguments correctly.
  • Fixed NullReferenceException in FunctionAnalyzer
  • Allow constants to be used in the function NameAnalyzer when there is no matching function found in source code

Durable Functions v1.8.6 Release

19 Jun 16:51
e1949a4
Compare
Choose a tag to compare

Bug Fixes:

  • Dynamically generate ports for local RPC endpoints (#1375)
  • Use unique worker ids to prevent split brain in all Azure Functions hosted environments (#1376)
  • All of the bug fixes in DurableTask.AzureStorage from release 1.7.2 to 1.7.7 (see release notes)