From fd69573eb919b56e3ffdca78afa9a0f16e092fb1 Mon Sep 17 00:00:00 2001 From: wangbill Date: Sat, 17 Oct 2026 11:54:33 -0400 Subject: [PATCH 1/4] Release v1.27.0 Pin the published Microsoft.Azure.DurableTask.Core 3.11.1 package and prepare shared SDK 1.27.0 release notes from the v1.26.0 baseline. Preserve independent package versions and the shared purge-contract version. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d8b0d983-394a-430a-9173-f86114285658 --- CHANGELOG.md | 11 ++++++++++- Directory.Packages.props | 2 +- eng/targets/Release.props | 2 +- src/Abstractions/RELEASENOTES.md | 2 +- src/Client/AzureManaged.Sandboxes/RELEASENOTES.md | 1 + src/Client/AzureManaged/RELEASENOTES.md | 3 +-- src/Client/Core/RELEASENOTES.md | 3 ++- src/Client/Grpc/RELEASENOTES.md | 1 + .../OrchestrationServiceClientShim/RELEASENOTES.md | 1 + src/Extensions/AzureBlobPayloads/RELEASENOTES.md | 4 ++++ src/Grpc/RELEASENOTES.md | 1 + src/InProcessTestHost/RELEASENOTES.md | 6 ++++++ src/LargePayloadPurge.Abstractions/RELEASENOTES.md | 2 +- src/Worker/AzureManaged.Sandboxes/RELEASENOTES.md | 1 + src/Worker/AzureManaged/RELEASENOTES.md | 3 +-- src/Worker/Core/RELEASENOTES.md | 2 +- src/Worker/Grpc/RELEASENOTES.md | 3 +++ 17 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 src/Client/AzureManaged.Sandboxes/RELEASENOTES.md create mode 100644 src/Client/OrchestrationServiceClientShim/RELEASENOTES.md create mode 100644 src/Extensions/AzureBlobPayloads/RELEASENOTES.md create mode 100644 src/InProcessTestHost/RELEASENOTES.md create mode 100644 src/Worker/AzureManaged.Sandboxes/RELEASENOTES.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 60f7789c0..bf07dbab9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,18 @@ ## Unreleased +## v1.27.0 + - Add `Microsoft.DurableTask.LargePayloadPurge.Abstractions` with shared fetch/report and service-setting interfaces, and expose the existing blob purge tasks for host integration ([#805](https://github.com/microsoft/durabletask-dotnet/pull/805)). -- Preserve the original orchestration version when restarting through the orchestration-service client shim ([#463](https://github.com/microsoft/durabletask-dotnet/issues/463)). +- Isolate in-process test-host work-item completion by delivery token ([#815](https://github.com/microsoft/durabletask-dotnet/pull/815)). +- Await backend operations for in-process test-host task-hub lifecycle changes ([#813](https://github.com/microsoft/durabletask-dotnet/pull/813)). +- Release streamed history snapshots after in-process test-host work items complete ([#811](https://github.com/microsoft/durabletask-dotnet/pull/811)). +- Treat omitted purge start times as unbounded in the in-process test host ([#810](https://github.com/microsoft/durabletask-dotnet/pull/810)). +- Fix orchestration history retrieval in the in-process test host ([#809](https://github.com/microsoft/durabletask-dotnet/pull/809)). +- Preserve the original orchestration version when restarting through the orchestration-service client shim ([#808](https://github.com/microsoft/durabletask-dotnet/pull/808), [#463](https://github.com/microsoft/durabletask-dotnet/issues/463)). - Support configurable scheduler token audiences and government defaults ([#806](https://github.com/microsoft/durabletask-dotnet/pull/806)) +- Add opt-in large-payload blob auto-purge with a persistent orchestration and shared Client purge models ([#758](https://github.com/microsoft/durabletask-dotnet/pull/758)). +- Update `Microsoft.Azure.DurableTask.Core` from `3.9.0` to the published `3.11.1` release. ## v1.26.0 - Adding rewind to the sidecar by sophiatev ([#802](https://github.com/microsoft/durabletask-dotnet/pull/802)) diff --git a/Directory.Packages.props b/Directory.Packages.props index 7b634b8fc..b45a44351 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -39,7 +39,7 @@ - + diff --git a/eng/targets/Release.props b/eng/targets/Release.props index 6c5d6ae44..9912064e7 100644 --- a/eng/targets/Release.props +++ b/eng/targets/Release.props @@ -18,7 +18,7 @@ - 1.26.0 + 1.27.0 diff --git a/src/Abstractions/RELEASENOTES.md b/src/Abstractions/RELEASENOTES.md index a8a7452df..6a0308c3a 100644 --- a/src/Abstractions/RELEASENOTES.md +++ b/src/Abstractions/RELEASENOTES.md @@ -1 +1 @@ -- Microsoft.Azure.DurableTask.Core dependency increased to `3.0.0` \ No newline at end of file +- Update the `Microsoft.Azure.DurableTask.Core` dependency to `3.11.1`. \ No newline at end of file diff --git a/src/Client/AzureManaged.Sandboxes/RELEASENOTES.md b/src/Client/AzureManaged.Sandboxes/RELEASENOTES.md new file mode 100644 index 000000000..862109a59 --- /dev/null +++ b/src/Client/AzureManaged.Sandboxes/RELEASENOTES.md @@ -0,0 +1 @@ +- Honor configured scheduler token audiences and per-instance government/DoD defaults when connecting to sandbox activities. diff --git a/src/Client/AzureManaged/RELEASENOTES.md b/src/Client/AzureManaged/RELEASENOTES.md index 6766f7b1d..0c806582c 100644 --- a/src/Client/AzureManaged/RELEASENOTES.md +++ b/src/Client/AzureManaged/RELEASENOTES.md @@ -1,3 +1,2 @@ - Support normalized ResourceId token audiences in options and connection strings, with per-instance government/DoD defaults that select the audience registered in that cloud. Public-cloud defaults are unchanged; cross-cloud scheduler access is unsupported. -- Support independent AuthorityHost connection-string configuration for SDK-created credentials that accept an authority, preserving Azure Identity defaults when omitted. -- Released first version Microsoft.DurableTask.Client.AzureManaged - 1.5.0-preview.1 \ No newline at end of file +- Support independent AuthorityHost connection-string configuration for SDK-created credentials that accept an authority, preserving Azure Identity defaults when omitted. \ No newline at end of file diff --git a/src/Client/Core/RELEASENOTES.md b/src/Client/Core/RELEASENOTES.md index dfa5b9703..a9e1f0981 100644 --- a/src/Client/Core/RELEASENOTES.md +++ b/src/Client/Core/RELEASENOTES.md @@ -1 +1,2 @@ -- Add new `IDurableTaskClientBuilder AddDurableTaskClient(IServiceCollection, string?)` API +- Add `LargePayloadTombstone`, `LargePayloadPurgeResult`, and `LargePayloadPurgeDisposition` models for large-payload blob cleanup. +- Update the transitive `Microsoft.Azure.DurableTask.Core` dependency to `3.11.1`. diff --git a/src/Client/Grpc/RELEASENOTES.md b/src/Client/Grpc/RELEASENOTES.md index e69de29bb..f80187bac 100644 --- a/src/Client/Grpc/RELEASENOTES.md +++ b/src/Client/Grpc/RELEASENOTES.md @@ -0,0 +1 @@ +- Support large-payload auto-purge control over the existing authenticated gRPC client transport. \ No newline at end of file diff --git a/src/Client/OrchestrationServiceClientShim/RELEASENOTES.md b/src/Client/OrchestrationServiceClientShim/RELEASENOTES.md new file mode 100644 index 000000000..850f6103f --- /dev/null +++ b/src/Client/OrchestrationServiceClientShim/RELEASENOTES.md @@ -0,0 +1 @@ +- Preserve the original orchestration version when restarting an instance, with either its existing instance ID or a new one. diff --git a/src/Extensions/AzureBlobPayloads/RELEASENOTES.md b/src/Extensions/AzureBlobPayloads/RELEASENOTES.md new file mode 100644 index 000000000..765c51f2d --- /dev/null +++ b/src/Extensions/AzureBlobPayloads/RELEASENOTES.md @@ -0,0 +1,4 @@ +- Add opt-in large-payload blob auto-purge with a persistent orchestration, controlled through `SetLargePayloadAutoPurgeAsync`. +- Reclaim self-describing `blob:v2` payloads; legacy `blob:v1` payloads are not deleted. +- Expose the shared purge orchestrator and activities for alternate-host integration through `Microsoft.DurableTask.LargePayloadPurge.Abstractions`. +- Keep purge transport attached to each named worker's authenticated channel across reconnections, and include infrastructure tasks in work-item filters without applying customer task-version policies to them. diff --git a/src/Grpc/RELEASENOTES.md b/src/Grpc/RELEASENOTES.md index e69de29bb..383e85268 100644 --- a/src/Grpc/RELEASENOTES.md +++ b/src/Grpc/RELEASENOTES.md @@ -0,0 +1 @@ +- Add large-payload purge service messages for enabling cleanup, fetching tombstones, and reporting deletion results. \ No newline at end of file diff --git a/src/InProcessTestHost/RELEASENOTES.md b/src/InProcessTestHost/RELEASENOTES.md new file mode 100644 index 000000000..d57dcda5e --- /dev/null +++ b/src/InProcessTestHost/RELEASENOTES.md @@ -0,0 +1,6 @@ +- Return ordered, committed history snapshots for the current orchestration execution, including terminal events. +- Treat omitted creation-time purge bounds as unbounded and evaluate explicit inclusive bounds in UTC. +- Release temporary worker history snapshots after work-item completion or dispatch failure. +- Await backend operations when creating, starting, stopping, or deleting a task hub. +- Isolate activity and orchestration completion by per-delivery completion tokens. Direct gRPC callers must echo the received `completionToken`; partial or chunked orchestration completion is unsupported and fails the orchestration. +- Update the `Microsoft.Azure.DurableTask.Core` dependency to `3.11.1`. diff --git a/src/LargePayloadPurge.Abstractions/RELEASENOTES.md b/src/LargePayloadPurge.Abstractions/RELEASENOTES.md index 51224bf72..73665b7fc 100644 --- a/src/LargePayloadPurge.Abstractions/RELEASENOTES.md +++ b/src/LargePayloadPurge.Abstractions/RELEASENOTES.md @@ -1 +1 @@ -- Initial service and activity transport contracts for large payload auto-purge, using the canonical Durable Task SDK Client models. +- Add `ILargePayloadPurgeClient` fetch/report and `IOrchestrationServiceLargePayloadPurgeClient` service-setting contracts for large-payload auto-purge, using the canonical Durable Task SDK Client models. diff --git a/src/Worker/AzureManaged.Sandboxes/RELEASENOTES.md b/src/Worker/AzureManaged.Sandboxes/RELEASENOTES.md new file mode 100644 index 000000000..bd8d84708 --- /dev/null +++ b/src/Worker/AzureManaged.Sandboxes/RELEASENOTES.md @@ -0,0 +1 @@ +- Preserve configured scheduler token audiences and per-instance government/DoD defaults when registering and reconnecting sandbox workers. diff --git a/src/Worker/AzureManaged/RELEASENOTES.md b/src/Worker/AzureManaged/RELEASENOTES.md index ae020fe75..ef8783b3e 100644 --- a/src/Worker/AzureManaged/RELEASENOTES.md +++ b/src/Worker/AzureManaged/RELEASENOTES.md @@ -1,3 +1,2 @@ - Support normalized ResourceId token audiences in options and connection strings, with per-instance government/DoD defaults retained for worker and sandbox registration reconnects. These defaults select the audience registered in that cloud. Public-cloud defaults are unchanged; cross-cloud scheduler access is unsupported. -- Support independent AuthorityHost connection-string configuration for SDK-created credentials that accept an authority, preserving Azure Identity defaults when omitted. -- Released first version Microsoft.DurableTask.Worker.AzureManaged - 1.5.0-preview.1 \ No newline at end of file +- Support independent AuthorityHost connection-string configuration for SDK-created credentials that accept an authority, preserving Azure Identity defaults when omitted. \ No newline at end of file diff --git a/src/Worker/Core/RELEASENOTES.md b/src/Worker/Core/RELEASENOTES.md index c00e885ba..55ee6c0f6 100644 --- a/src/Worker/Core/RELEASENOTES.md +++ b/src/Worker/Core/RELEASENOTES.md @@ -1 +1 @@ -- Add new `IDurableTaskWorkerBuilder AddDurableTaskWorker(IServiceCollection, string?)` API +- Update the transitive `Microsoft.Azure.DurableTask.Core` dependency to `3.11.1`. diff --git a/src/Worker/Grpc/RELEASENOTES.md b/src/Worker/Grpc/RELEASENOTES.md index e69de29bb..02aa9c4f6 100644 --- a/src/Worker/Grpc/RELEASENOTES.md +++ b/src/Worker/Grpc/RELEASENOTES.md @@ -0,0 +1,3 @@ +- Add configurable gRPC interceptors that remain attached when the worker recreates its channel. +- Keep infrastructure auto-purge tasks independent of customer task-version policies while preserving customer task filters and version checks. +- Update the `Microsoft.Azure.DurableTask.Core` dependency to `3.11.1`. \ No newline at end of file From 76775e2f307484e196454d4b841a633a8abd24a8 Mon Sep 17 00:00:00 2001 From: wangbill Date: Sun, 18 Oct 2026 21:05:26 -0400 Subject: [PATCH 2/4] Limit release notes to purge packages Restore unrelated per-package release notes to the PR base. Keep the aggregate changelog, shared SDK 1.27.0, published Core 3.11.1 pin, and the two directly relevant purge-package notes unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d8b0d983-394a-430a-9173-f86114285658 --- src/Abstractions/RELEASENOTES.md | 2 +- src/Client/AzureManaged.Sandboxes/RELEASENOTES.md | 1 - src/Client/AzureManaged/RELEASENOTES.md | 3 ++- src/Client/Core/RELEASENOTES.md | 3 +-- src/Client/Grpc/RELEASENOTES.md | 1 - src/Client/OrchestrationServiceClientShim/RELEASENOTES.md | 1 - src/Grpc/RELEASENOTES.md | 1 - src/InProcessTestHost/RELEASENOTES.md | 6 ------ src/Worker/AzureManaged.Sandboxes/RELEASENOTES.md | 1 - src/Worker/AzureManaged/RELEASENOTES.md | 3 ++- src/Worker/Core/RELEASENOTES.md | 2 +- src/Worker/Grpc/RELEASENOTES.md | 3 --- 12 files changed, 7 insertions(+), 20 deletions(-) delete mode 100644 src/Client/AzureManaged.Sandboxes/RELEASENOTES.md delete mode 100644 src/Client/OrchestrationServiceClientShim/RELEASENOTES.md delete mode 100644 src/InProcessTestHost/RELEASENOTES.md delete mode 100644 src/Worker/AzureManaged.Sandboxes/RELEASENOTES.md diff --git a/src/Abstractions/RELEASENOTES.md b/src/Abstractions/RELEASENOTES.md index 6a0308c3a..a8a7452df 100644 --- a/src/Abstractions/RELEASENOTES.md +++ b/src/Abstractions/RELEASENOTES.md @@ -1 +1 @@ -- Update the `Microsoft.Azure.DurableTask.Core` dependency to `3.11.1`. \ No newline at end of file +- Microsoft.Azure.DurableTask.Core dependency increased to `3.0.0` \ No newline at end of file diff --git a/src/Client/AzureManaged.Sandboxes/RELEASENOTES.md b/src/Client/AzureManaged.Sandboxes/RELEASENOTES.md deleted file mode 100644 index 862109a59..000000000 --- a/src/Client/AzureManaged.Sandboxes/RELEASENOTES.md +++ /dev/null @@ -1 +0,0 @@ -- Honor configured scheduler token audiences and per-instance government/DoD defaults when connecting to sandbox activities. diff --git a/src/Client/AzureManaged/RELEASENOTES.md b/src/Client/AzureManaged/RELEASENOTES.md index 0c806582c..6766f7b1d 100644 --- a/src/Client/AzureManaged/RELEASENOTES.md +++ b/src/Client/AzureManaged/RELEASENOTES.md @@ -1,2 +1,3 @@ - Support normalized ResourceId token audiences in options and connection strings, with per-instance government/DoD defaults that select the audience registered in that cloud. Public-cloud defaults are unchanged; cross-cloud scheduler access is unsupported. -- Support independent AuthorityHost connection-string configuration for SDK-created credentials that accept an authority, preserving Azure Identity defaults when omitted. \ No newline at end of file +- Support independent AuthorityHost connection-string configuration for SDK-created credentials that accept an authority, preserving Azure Identity defaults when omitted. +- Released first version Microsoft.DurableTask.Client.AzureManaged - 1.5.0-preview.1 \ No newline at end of file diff --git a/src/Client/Core/RELEASENOTES.md b/src/Client/Core/RELEASENOTES.md index a9e1f0981..dfa5b9703 100644 --- a/src/Client/Core/RELEASENOTES.md +++ b/src/Client/Core/RELEASENOTES.md @@ -1,2 +1 @@ -- Add `LargePayloadTombstone`, `LargePayloadPurgeResult`, and `LargePayloadPurgeDisposition` models for large-payload blob cleanup. -- Update the transitive `Microsoft.Azure.DurableTask.Core` dependency to `3.11.1`. +- Add new `IDurableTaskClientBuilder AddDurableTaskClient(IServiceCollection, string?)` API diff --git a/src/Client/Grpc/RELEASENOTES.md b/src/Client/Grpc/RELEASENOTES.md index f80187bac..e69de29bb 100644 --- a/src/Client/Grpc/RELEASENOTES.md +++ b/src/Client/Grpc/RELEASENOTES.md @@ -1 +0,0 @@ -- Support large-payload auto-purge control over the existing authenticated gRPC client transport. \ No newline at end of file diff --git a/src/Client/OrchestrationServiceClientShim/RELEASENOTES.md b/src/Client/OrchestrationServiceClientShim/RELEASENOTES.md deleted file mode 100644 index 850f6103f..000000000 --- a/src/Client/OrchestrationServiceClientShim/RELEASENOTES.md +++ /dev/null @@ -1 +0,0 @@ -- Preserve the original orchestration version when restarting an instance, with either its existing instance ID or a new one. diff --git a/src/Grpc/RELEASENOTES.md b/src/Grpc/RELEASENOTES.md index 383e85268..e69de29bb 100644 --- a/src/Grpc/RELEASENOTES.md +++ b/src/Grpc/RELEASENOTES.md @@ -1 +0,0 @@ -- Add large-payload purge service messages for enabling cleanup, fetching tombstones, and reporting deletion results. \ No newline at end of file diff --git a/src/InProcessTestHost/RELEASENOTES.md b/src/InProcessTestHost/RELEASENOTES.md deleted file mode 100644 index d57dcda5e..000000000 --- a/src/InProcessTestHost/RELEASENOTES.md +++ /dev/null @@ -1,6 +0,0 @@ -- Return ordered, committed history snapshots for the current orchestration execution, including terminal events. -- Treat omitted creation-time purge bounds as unbounded and evaluate explicit inclusive bounds in UTC. -- Release temporary worker history snapshots after work-item completion or dispatch failure. -- Await backend operations when creating, starting, stopping, or deleting a task hub. -- Isolate activity and orchestration completion by per-delivery completion tokens. Direct gRPC callers must echo the received `completionToken`; partial or chunked orchestration completion is unsupported and fails the orchestration. -- Update the `Microsoft.Azure.DurableTask.Core` dependency to `3.11.1`. diff --git a/src/Worker/AzureManaged.Sandboxes/RELEASENOTES.md b/src/Worker/AzureManaged.Sandboxes/RELEASENOTES.md deleted file mode 100644 index bd8d84708..000000000 --- a/src/Worker/AzureManaged.Sandboxes/RELEASENOTES.md +++ /dev/null @@ -1 +0,0 @@ -- Preserve configured scheduler token audiences and per-instance government/DoD defaults when registering and reconnecting sandbox workers. diff --git a/src/Worker/AzureManaged/RELEASENOTES.md b/src/Worker/AzureManaged/RELEASENOTES.md index ef8783b3e..ae020fe75 100644 --- a/src/Worker/AzureManaged/RELEASENOTES.md +++ b/src/Worker/AzureManaged/RELEASENOTES.md @@ -1,2 +1,3 @@ - Support normalized ResourceId token audiences in options and connection strings, with per-instance government/DoD defaults retained for worker and sandbox registration reconnects. These defaults select the audience registered in that cloud. Public-cloud defaults are unchanged; cross-cloud scheduler access is unsupported. -- Support independent AuthorityHost connection-string configuration for SDK-created credentials that accept an authority, preserving Azure Identity defaults when omitted. \ No newline at end of file +- Support independent AuthorityHost connection-string configuration for SDK-created credentials that accept an authority, preserving Azure Identity defaults when omitted. +- Released first version Microsoft.DurableTask.Worker.AzureManaged - 1.5.0-preview.1 \ No newline at end of file diff --git a/src/Worker/Core/RELEASENOTES.md b/src/Worker/Core/RELEASENOTES.md index 55ee6c0f6..c00e885ba 100644 --- a/src/Worker/Core/RELEASENOTES.md +++ b/src/Worker/Core/RELEASENOTES.md @@ -1 +1 @@ -- Update the transitive `Microsoft.Azure.DurableTask.Core` dependency to `3.11.1`. +- Add new `IDurableTaskWorkerBuilder AddDurableTaskWorker(IServiceCollection, string?)` API diff --git a/src/Worker/Grpc/RELEASENOTES.md b/src/Worker/Grpc/RELEASENOTES.md index 02aa9c4f6..e69de29bb 100644 --- a/src/Worker/Grpc/RELEASENOTES.md +++ b/src/Worker/Grpc/RELEASENOTES.md @@ -1,3 +0,0 @@ -- Add configurable gRPC interceptors that remain attached when the worker recreates its channel. -- Keep infrastructure auto-purge tasks independent of customer task-version policies while preserving customer task filters and version checks. -- Update the `Microsoft.Azure.DurableTask.Core` dependency to `3.11.1`. \ No newline at end of file From 6486f9359d392f7e29d1eccca72a5aaa59bca15a Mon Sep 17 00:00:00 2001 From: wangbill Date: Mon, 19 Oct 2026 11:02:14 -0400 Subject: [PATCH 3/4] Keep release notes in aggregate changelog Restore the existing purge contract release note to the PR base and remove only the Blob package note introduced by this PR. Leave the aggregate changelog, shared SDK 1.27.0, published Core 3.11.1 pin, and every other source file unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d8b0d983-394a-430a-9173-f86114285658 --- src/Extensions/AzureBlobPayloads/RELEASENOTES.md | 4 ---- src/LargePayloadPurge.Abstractions/RELEASENOTES.md | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 src/Extensions/AzureBlobPayloads/RELEASENOTES.md diff --git a/src/Extensions/AzureBlobPayloads/RELEASENOTES.md b/src/Extensions/AzureBlobPayloads/RELEASENOTES.md deleted file mode 100644 index 765c51f2d..000000000 --- a/src/Extensions/AzureBlobPayloads/RELEASENOTES.md +++ /dev/null @@ -1,4 +0,0 @@ -- Add opt-in large-payload blob auto-purge with a persistent orchestration, controlled through `SetLargePayloadAutoPurgeAsync`. -- Reclaim self-describing `blob:v2` payloads; legacy `blob:v1` payloads are not deleted. -- Expose the shared purge orchestrator and activities for alternate-host integration through `Microsoft.DurableTask.LargePayloadPurge.Abstractions`. -- Keep purge transport attached to each named worker's authenticated channel across reconnections, and include infrastructure tasks in work-item filters without applying customer task-version policies to them. diff --git a/src/LargePayloadPurge.Abstractions/RELEASENOTES.md b/src/LargePayloadPurge.Abstractions/RELEASENOTES.md index 73665b7fc..51224bf72 100644 --- a/src/LargePayloadPurge.Abstractions/RELEASENOTES.md +++ b/src/LargePayloadPurge.Abstractions/RELEASENOTES.md @@ -1 +1 @@ -- Add `ILargePayloadPurgeClient` fetch/report and `IOrchestrationServiceLargePayloadPurgeClient` service-setting contracts for large-payload auto-purge, using the canonical Durable Task SDK Client models. +- Initial service and activity transport contracts for large payload auto-purge, using the canonical Durable Task SDK Client models. From 0a24c90cf4821c4272590f60ce6334118d86e489 Mon Sep 17 00:00:00 2001 From: wangbill Date: Mon, 19 Oct 2026 12:54:44 -0400 Subject: [PATCH 4/4] Wait for tagged sub-orchestration parents before stopping tests Keep each tagged sub-orchestration test worker alive until both its child and parent have completed. This prevents unfinished parent deliveries from leaking into the shared sidecar and starving later orchestration tests. Preserve existing tag and retry assertions without changing runtime handlers, test timeouts, or package versions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d8b0d983-394a-430a-9173-f86114285658 --- .../OrchestrationPatterns.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/test/Grpc.IntegrationTests/OrchestrationPatterns.cs b/test/Grpc.IntegrationTests/OrchestrationPatterns.cs index 6ae19097b..f2815e5bf 100644 --- a/test/Grpc.IntegrationTests/OrchestrationPatterns.cs +++ b/test/Grpc.IntegrationTests/OrchestrationPatterns.cs @@ -98,7 +98,7 @@ public async Task ScheduleSubOrchestrationWithTags() }); - await server.Client.ScheduleNewOrchestrationInstanceAsync(orchestratorName, input: 1); + string parentInstanceId = await server.Client.ScheduleNewOrchestrationInstanceAsync(orchestratorName, input: 1); OrchestrationMetadata metadata = await server.Client.WaitForInstanceCompletionAsync( subOrchestrationOptions.InstanceId, this.TimeoutToken); @@ -109,6 +109,12 @@ public async Task ScheduleSubOrchestrationWithTags() Assert.Equal(2, metadata.Tags.Count); Assert.Equal("value1", metadata.Tags["tag1"]); Assert.Equal("value2", metadata.Tags["tag2"]); + + // The shared sidecar still needs this worker to process the child's result in its parent. + OrchestrationMetadata parentMetadata = await server.Client.WaitForInstanceCompletionAsync( + parentInstanceId, this.TimeoutToken); + Assert.NotNull(parentMetadata); + Assert.Equal(OrchestrationRuntimeStatus.Completed, parentMetadata.RuntimeStatus); } [Fact] @@ -155,7 +161,7 @@ public async Task ScheduleSubOrchestrationWithTagsAndRetryPolicy() })); }); - await server.Client.ScheduleNewOrchestrationInstanceAsync(orchestratorName, input: 1); + string parentInstanceId = await server.Client.ScheduleNewOrchestrationInstanceAsync(orchestratorName, input: 1); // Confirm the orchestration eventually succeeded after some delay for the retry to complete await Task.Delay(TimeSpan.FromSeconds(3)); @@ -169,6 +175,11 @@ public async Task ScheduleSubOrchestrationWithTagsAndRetryPolicy() Assert.Equal("value2", metadata.Tags["tag2"]); // 3 invocations - one for the parent orchestration, one for the first suborchestration attempt, one for the final suborchestration attempt Assert.Equal(3, invocationCounter); + + OrchestrationMetadata parentMetadata = await server.Client.WaitForInstanceCompletionAsync( + parentInstanceId, this.TimeoutToken); + Assert.NotNull(parentMetadata); + Assert.Equal(OrchestrationRuntimeStatus.Completed, parentMetadata.RuntimeStatus); } [Fact]