Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions release_notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

### Bug Fixes

- Check if function invocation already has an executor before registering durable executor. (#3265)

### Breaking Changes

### Dependency Updates
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ internal class DurableTaskFunctionsMiddleware(DurableFunctionExecutor invoker) :
/// <inheritdoc />
public Task Invoke(FunctionContext functionContext, FunctionExecutionDelegate next)
{
if (functionContext.TryGetOrchestrationBinding(out _)
|| functionContext.TryGetEntityBinding(out _)
|| functionContext.TryGetActivityBinding(out _))
// If the function is a Durable Task function and there is no executor registered yet,
// register the Durable Function executor.
if (functionContext.Features.Get<IFunctionExecutor>() is null && functionContext.IsDurableTaskFunction())
{
functionContext.Features.Set<IFunctionExecutor>(invoker);
}
Expand Down
10 changes: 10 additions & 0 deletions src/Worker.Extensions.DurableTask/FunctionContextExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@ namespace Microsoft.Azure.Functions.Worker.Extensions.DurableTask;

internal static class FunctionContextExtensions
{
/// <summary>
/// Determines whether the function context represents a Durable Task function.
/// </summary>
/// <param name="context">The function context.</param>
/// <returns>True if function is a durable task trigger, false otherwise.</returns>
public static bool IsDurableTaskFunction(this FunctionContext context)
=> context.TryGetOrchestrationBinding(out _)
|| context.TryGetActivityBinding(out _)
|| context.TryGetEntityBinding(out _);

/// <summary>
/// Tries to get the orchestration trigger binding from the function context.
/// </summary>
Expand Down
Loading