Skip to content
Merged
2 changes: 1 addition & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

<!-- DurableTask Packages -->
<ItemGroup>
<PackageVersion Include="Microsoft.Azure.DurableTask.Core" Version="3.4.0" />
<PackageVersion Include="Microsoft.Azure.DurableTask.Core" Version="3.5.0" />
<PackageVersion Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.2.2" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion eng/targets/Release.props
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
</PropertyGroup>

<PropertyGroup>
<VersionPrefix>1.15.1</VersionPrefix>
<VersionPrefix>1.16.0</VersionPrefix>
<VersionSuffix></VersionSuffix>
</PropertyGroup>

Expand Down
3 changes: 2 additions & 1 deletion src/Abstractions/DurableTaskCoreExceptionsExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ static class DurableTaskCoreExceptionsExtensions
failureDetails.ErrorType,
failureDetails.ErrorMessage,
failureDetails.StackTrace,
failureDetails.InnerFailure?.ToTaskFailureDetails());
failureDetails.InnerFailure?.ToTaskFailureDetails(),
failureDetails.Properties);
}
}
19 changes: 13 additions & 6 deletions src/Abstractions/TaskFailureDetails.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ namespace Microsoft.DurableTask;
/// <param name="ErrorMessage">A summary description of the failure.</param>
/// <param name="StackTrace">The stack trace of the failure.</param>
/// <param name="InnerFailure">The inner cause of the task failure.</param>
public record TaskFailureDetails(string ErrorType, string ErrorMessage, string? StackTrace, TaskFailureDetails? InnerFailure)
/// <param name="Properties">Additional properties associated with the exception.</param>
public record TaskFailureDetails(string ErrorType, string ErrorMessage, string? StackTrace, TaskFailureDetails? InnerFailure, IDictionary<string, object?>? Properties)
{
Type? loadedExceptionType;

Expand Down Expand Up @@ -123,7 +124,8 @@ internal CoreFailureDetails ToCoreFailureDetails()
this.ErrorMessage,
this.StackTrace,
this.InnerFailure?.ToCoreFailureDetails(),
isNonRetriable: false);
isNonRetriable: false,
this.Properties);
}

/// <summary>
Expand All @@ -143,7 +145,8 @@ internal CoreFailureDetails ToCoreFailureDetails()
coreFailureDetails.ErrorType,
coreFailureDetails.ErrorMessage,
coreFailureDetails.StackTrace,
FromCoreFailureDetails(coreFailureDetails.InnerFailure));
FromCoreFailureDetails(coreFailureDetails.InnerFailure),
coreFailureDetails.Properties);
}

[return: NotNullIfNotNull(nameof(exception))]
Expand All @@ -160,14 +163,17 @@ internal CoreFailureDetails ToCoreFailureDetails()
coreEx.FailureDetails?.ErrorType ?? "(unknown)",
coreEx.FailureDetails?.ErrorMessage ?? "(unknown)",
coreEx.FailureDetails?.StackTrace,
FromCoreFailureDetailsRecursive(coreEx.FailureDetails?.InnerFailure) ?? FromExceptionRecursive(coreEx.InnerException));
FromCoreFailureDetailsRecursive(coreEx.FailureDetails?.InnerFailure) ?? FromExceptionRecursive(coreEx.InnerException),
coreEx.FailureDetails?.Properties);
}

// might need to udpate this later
return new TaskFailureDetails(
exception.GetType().ToString(),
exception.Message,
exception.StackTrace,
FromExceptionRecursive(exception.InnerException));
FromExceptionRecursive(exception.InnerException),
null);
}

static TaskFailureDetails? FromCoreFailureDetailsRecursive(CoreFailureDetails? coreFailureDetails)
Expand All @@ -181,6 +187,7 @@ internal CoreFailureDetails ToCoreFailureDetails()
coreFailureDetails.ErrorType,
coreFailureDetails.ErrorMessage,
coreFailureDetails.StackTrace,
FromCoreFailureDetailsRecursive(coreFailureDetails.InnerFailure));
FromCoreFailureDetailsRecursive(coreFailureDetails.InnerFailure),
coreFailureDetails.Properties);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public static Core.OrchestrationStatus ConvertToCore(this OrchestrationRuntimeSt
}

TaskFailureDetails? inner = details.InnerFailure?.ConvertFromCore();
return new TaskFailureDetails(details.ErrorType, details.ErrorMessage, details.StackTrace, inner);
return new TaskFailureDetails(details.ErrorType, details.ErrorMessage, details.StackTrace, inner, details.Properties);
}

/// <summary>
Expand Down
10 changes: 8 additions & 2 deletions src/Grpc/orchestrator_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ message TaskFailureDetails {
google.protobuf.StringValue stackTrace = 3;
TaskFailureDetails innerFailure = 4;
bool isNonRetriable = 5;
map<string, google.protobuf.Value> properties = 6;
}

enum OrchestrationStatus {
Expand Down Expand Up @@ -469,6 +470,7 @@ message PurgeInstancesRequest {
oneof request {
string instanceId = 1;
PurgeInstanceFilter purgeInstanceFilter = 2;
InstanceBatch instanceBatch = 4;
}
bool recursive = 3;
}
Expand Down Expand Up @@ -681,8 +683,7 @@ message AbandonEntityTaskResponse {
}

message SkipGracefulOrchestrationTerminationsRequest {
// A maximum of 500 instance IDs can be provided in this list.
repeated string instanceIds = 1;
InstanceBatch instanceBatch = 1;
google.protobuf.StringValue reason = 2;
}

Expand Down Expand Up @@ -818,4 +819,9 @@ message StreamInstanceHistoryRequest {

message HistoryChunk {
repeated HistoryEvent events = 1;
}

message InstanceBatch {
// A maximum of 500 instance IDs can be provided in this list.
repeated string instanceIds = 1;
}
4 changes: 2 additions & 2 deletions src/Grpc/versions.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# The following files were downloaded from branch main at 2025-09-17 01:45:58 UTC
https://raw.githubusercontent.com/microsoft/durabletask-protobuf/f5745e0d83f608d77871c1894d9260ceaae08967/protos/orchestrator_service.proto
# The following files were downloaded from branch main at 2025-10-13 18:06:55 UTC
https://raw.githubusercontent.com/microsoft/durabletask-protobuf/97cf9cf6ac44107b883b0f4ab1dd62ee2332cfd9/protos/orchestrator_service.proto
Loading
Loading