Repository navigation
feat: [2/6] integrate payloads with clients workers and history - #389
Open
wangbill (YunchuWang) wants to merge 8 commits into
Open
wangbill (YunchuWang) wants to merge 8 commits into
wangbill (YunchuWang) wants to merge 8 commits into
Conversation
Phase 2 of 6: externalize outgoing payloads and await query, work-item and streamed history hydration before conversion or dispatch. Add Azure-managed builder opt-in and its core API peer floor, without importing the later Azure Blob provider or cleanup runner. Co-authored-by: Copilot App <[email protected]> Copilot-Session: 81e20512-d3a2-4f8e-a574-f396140ec9c7
This was referenced Oct 16, 2026
Inherit d5c9df7 carryover traversal and 55dfcf3 whole-message size preflight without rewriting phase history. Preserve the SDK phase boundary and all release notes. Co-authored-by: Copilot App <[email protected]> Copilot-Session: 81e20512-d3a2-4f8e-a574-f396140ec9c7
Release acquired work through the captured task-specific abandon RPC after unconverted payload failures, preserving host errors and cancellation-aware bounded delivery. Co-authored-by: Copilot App <[email protected]> Copilot-Session: 2e5a9c41-aa30-4a1e-b176-22049e28af91
Hydrate successful wait responses outside scheduler deadline recovery so custom payload-store errors retain their original identity and cancellation. Co-authored-by: Copilot App <[email protected]> Copilot-Session: 2e5a9c41-aa30-4a1e-b176-22049e28af91
Preserve the existing phase head and all approved SDK repairs while inheriting aeb598f recognized-token skipping and bee1313 aborted-signal precedence. No unrelated behavior or release metadata changes. Co-authored-by: Copilot App <[email protected]> Copilot-Session: 81e20512-d3a2-4f8e-a574-f396140ec9c7
Keep payload externalization and metadata generation outside the startInstance error translation catch. Preserve original non-scheduler errors, real scheduler causes, scheduling options and stop cancellation, with real loopback regression coverage. Co-authored-by: Copilot App <[email protected]> Copilot-Session: 2e5a9c41-aa30-4a1e-b176-22049e28af91
Combine approved scheduling RPC error-domain isolation with the exact approved rewind input mapping and regression tests. Preserve both source commits and the prior phase history. Co-authored-by: Copilot App <[email protected]> Copilot-Session: 81e20512-d3a2-4f8e-a574-f396140ec9c7
Keep a single payload/metadata/RPC/hydration pipeline in _call. Invoke operation mapping or retry callbacks only for actual RPC failures; preserve original non-RPC errors and cancellation, per-attempt fresh metadata, one externalization/hydration, and no-generator dispatch timing. Route start, completion waits, rewind and restart through that shared boundary. Co-authored-by: Copilot App <[email protected]> Copilot-Session: 2e5a9c41-aa30-4a1e-b176-22049e28af91
| : signal; | ||
| effectiveSignal?.throwIfAborted(); | ||
| if (this._payloads) await this._payloads.externalize(request, effectiveSignal); | ||
| while (true) { |
Member
Author
There was a problem hiding this comment.
what no max retries?
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?
_call. Scheduling, completion waits, rewind and restart supply only their RPC error-mapping/retry callbacks; storage/metadata/hydration errors retain their original identity.Why is this change needed?
91739687. The stack also inherits the reviewed JavaScript carryover and whole-message size-preflight repairs described below; it does not claim unchanged .NET failure-priority semantics.Issues / work items
Project checklist
CHANGELOG.mdAI-assisted code disclosure (required)
Was an AI tool used? (select one)
If AI was used:
AI verification (required if AI was used):
These human attestations are intentionally left unchecked.
Testing
Automated tests
f3ea69fc79eb594961ab4d57651f5e1360fb9127.npm run test:unit -w @microsoft/durabletask-js -- --runTestsByPath test\client-error-cause.spec.ts test\client-wait.spec.ts test\client-wait-grpc.spec.ts test\payload-transport.spec.ts test\orchestration-id-reuse-policy.spec.ts test\client-options.spec.ts test\client-suspend-resume.spec.ts test\client-purge.spec.ts— 233 tests / 8 suites passed on this exact approved commit.npm run build:coreandnpm run lint— passed. Scoped TypeScript/changelog formatting, commit-hook ESLint andgit diff --check b4ddad9afa9f28d1ca9ebc510e5921074855cd56..HEADpassed.central-call-red.log,central-call-owning-final-green.log,central-call-final-build-lint.log,central-call-final-format-diff.log; failed intermediate fixture/timing logs are not presented as passing final evidence.git diff --check origin/yunchuwang-payload-phase-1-core...HEAD— passed. Prior heads remain ancestors; predecessor bases, phase-local review scopes, release/cleanup/version notes and ready-for-review state are preserved.ae63cab8ecb6ec6b2b3e0e15067091a5b8a6b24e:npm run test:unit— 3,180 tests / 133 suites passed (core 2,028; Functions 226; Blob 39; Azure-managed 821; export-history 66). Ten opt-in service tests are skipped by this unit command.npm run buildpassed all five workspaces andnpm run lintpassed. This is the true final aggregate containing both approved commits; the earlier stopped pre-lifecycle run is not a final pass._call; all five semantic callers delegate; phase4–6 client/lifecycle fixtures match the approved runner fix, and PR1 processor plus existing public-loopback fixtures are unchanged.ae63cab8ecb6ec6b2b3e0e15067091a5b8a6b24e— PENDING (in_progress) at2026-10-22T19:07:38.5343134Z. The link is authoritative for later completion; no early pass is claimed.137bb547e8781fd84c2738c3e13ae0f65cd66174; its separately verified hosted evidence is 30 SUCCESS / 1 SKIPPED. Review approval is still required. Main-base-only PR filters are unchanged; absent stacked-PR jobs are not passes.Manual validation (only if runtime/behavior changed)
Notes for reviewers
Shared unary boundary correction
f3ea69fc79eb594961ab4d57651f5e1360fb9127restores one private_callpipeline: combine cancellation once; externalize once; generate fresh metadata outside each RPC catch; invoke only the operation's RPC policy; hydrate once after success.trueretries the RPC,falserethrows unchanged, and throwing maps a genuine RPC error with its cause. The no-metadata path preserves its original dispatch timing.mainyunchuwang-payload-phase-1-coreyunchuwang-payload-phase-2-sdkyunchuwang-payload-phase-3-blobyunchuwang-payload-phase-4-clientyunchuwang-payload-phase-5-workerMerge 1 → 2 → 3 → 4 → 5 → 6. Each PR targets its predecessor; retarget the next PR only after its prerequisite merges. Do not publish packages or describe a partial phase as the complete feature.