Add SDK-owned blob purge service contract and shared task integration - #805
Draft
wangbill (YunchuWang) wants to merge 13 commits into
Draft
wangbill (YunchuWang) wants to merge 13 commits into
wangbill (YunchuWang) wants to merge 13 commits into
Conversation
Reuse the existing purge tasks and bootstrap sequence with a task-hub-bound transport interface. Preserve standalone behavior and prove DTFx shim execution, failure handling, replay, and per-hub setup. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Reuse the existing native gRPC client for setup instead of adding an alternate bootstrap overload. Remove the unused setting facade and client shim tests while retaining actual DTFx purge task execution coverage. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Document normal function indexing, language-worker task execution, and the bound local-host transport. Preserve the existing SDK implementation and explicit bootstrap without claiming Functions end-to-end validation. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Clarify normal compiled-library Function indexing and opt-in package registration without a metadata transformer or generator. Preserve the base extension behavior and unchanged shared SDK tasks. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Describe explicit registration, normal function metadata and bindings without naming an unreleased package or prescribing its metadata implementation. Leave shared task APIs and bootstrap unchanged. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Describe the optional feature package's normal build-time Function discovery and generated invocation. Preserve shared SDK task APIs, explicit bootstrap behavior, and standalone operation. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
25 tasks
Restore the constants file to its upstream scope after verifying final consumers use only the public activities and transport facade. Trim integration documentation to the current isolated Functions path. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve the interface package identity and canonical SDK Client model references with an independent version. Add focused API and signing tests, Apache license attribution, solution discovery, and existing release signing coverage. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add the preserved package ID to the existing independent NuGet publication jobs, retaining the manual approval gate and symbol exclusion. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Explain the interface-only netstandard2.0 target alongside the matching Client model library. Use a typed xUnit assertion before validating activity deadlines. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve both interface APIs and SDK model identities while removing the Blob implementation dependency from transport consumers. Add ownership and dependency regression coverage and package the existing Apache and MIT notices together. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use an extension-bearing package path so NuGet places the linked MIT license at the documented package root rather than treating it as a directory. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the repository license linked without duplicating it and document the actual NuGet directory layout. Copilot-Session: 883b4cbd-e93c-4d4e-8cb8-ffcf69525cfa Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
What changed?
Microsoft.Azure.DurableTask.LargePayloadPurge.Abstractions, an independently versioned package containing the service capability and activity transport interfaces, with a source reference to the SDK Client project.Microsoft.DurableTask.Client; no model copies, moves or type forwarders.GetLargePayloadTombstonesActivityandReportLargePayloadPurgeResultsActivitypublicly constructible with a task-hub-boundILargePayloadPurgeClient.ILargePayloadPurgeClientin the contracts assembly, preserving its namespace and signatures. The Blob implementation references the contracts package, so transport consumers do not need a reference to the Blob implementation.Why is this change needed?
Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloadspackage invokes the shared purge tasks through ordinary function bindings. Public construction and the narrow transport interface let it reuse the SDK implementation with a bound local-host bridge and worker-owned blob storage.ProjectReferencerather than requiring an externally published SDK model package to bootstrap compilation.Issues / work items
Project checklist
release_notes.mdNo breaking change for released SDK packages - the constructors and interfaces are additive relative to main.
The constants remain internal. The original bootstrap, orchestration, deletion, task names, payloads, retries
and continue-as-new behavior are unchanged.
The package preserves assembly name
DurableTask.LargePayloadPurge.Abstractions, SDK signing key and planned0.1.0version. The service capability remains inDurableTask.LargePayloadPurgewith its three requireddeadline/cancellation signatures. The activity transport remains in
Microsoft.DurableTask.AzureBlobPayloadswith its original two signatures and optional cancellation-token defaults. Canonical SDK model identity and
all runtime implementations are unchanged. No protobuf changes are included.
Breaking Change (unreleased prototype binaries only)
ILargePayloadPurgeClientmoves from the unreleased Blob implementation assembly to the contracts assembly; no duplicate definition or type forwarder remains.AI-assisted code disclosure (required)
Was an AI tool used? (select one)
If AI was used:
AI verification (required if AI was used):
These first-person attestations remain for the human author.
Testing
Automated tests
dotnet test test\LargePayloadPurge.Abstractions.Tests\LargePayloadPurge.Abstractions.Tests.csproj --no-restore --verbosity quietdotnet test test\Extensions\AzureBlobPayloads.Tests\AzureBlobPayloads.Tests.csproj --no-restore --verbosity quietIOrchestrationServiceLargePayloadPurgeClientandILargePayloadPurgeClient, references the canonical Client models, and carries the SDK strong-name token.Apache-2.0 AND MIT.Manual validation (only if runtime/behavior changed)
Notes for reviewers
0.1.0, independent of the repository-wide SDK version. The service interface retains its Apache-2.0 notice and the activity transport interface retains its MIT notice. The package includes both original texts and declaresApache-2.0 AND MIT; no source was relicensed.1.26.0lacks those models. Source builds do not need an external Client-version override; local package versions used for validation are not release claims.SetLargePayloadAutoPurgeAsyncremains authoritative: enable sets the backend flag, deduplicates the fixed unversioned runner, verifies identity/Running status and sends the batch event; disable only writes the setting.