Skip to content

Match Server poll capacity task kinds and release Python SDK 2.3.3 - #78

Merged
rmcdaniel merged 1 commit into
mainfrom
fix/poll-backpressure-server-kind-75
Sep 26, 2026
Merged

rmcdaniel merged 1 commit into
mainfrom
fix/poll-backpressure-server-kind-75

Conversation

@rmcdaniel

Copy link
Copy Markdown
Member

Contract correction

Server's published poll-capacity response identifies task_kind as workflow_task, activity_task, or query_task. The merged #76 implementation checked workflow, activity, and query, so its tests passed against a fabricated response and real typed backpressure would still take the generic 429 retry/warning path. This PR aligns the transport route check and all three worker loops with Server's response contract and Server's feature assertions. The tests now use the actual Server values and retain a wrong-kind rejection check.

Release recovery

The 2.3.2 source tag exists at 09fe7f678c022e18c82b62a9d5659c102f82bd02, but its publication run was canceled before PyPI upload. PyPI exact-version JSON returned 404 after cancellation and no GitHub Release was created. Keep that tag immutable and publish the corrected source as 2.3.3; the changelog and package metadata now reflect that version.

Checks and follow-through

  • 440 focused client/retry/worker tests passed (2 skips) in an isolated Python 3.12 container; 8 release-metadata tests passed; git diff --check passed.
  • CI and isolated Server integration are running. After merge, tag the exact merge commit, verify publication and installed PyPI wheel, and exercise actual typed backpressure against a published Server image before closing Handle typed poll capacity backpressure without warning or duplicate transport retries #75.
  • Recheck the Cloud Dev worker journey privately before claiming managed-service delivery. No Server, Workflow, PHP SDK, Rust SDK, or CLI release is required for this Python-only correction; Sample App and Cloud keep their separately qualified tuples pending their own follow-through.

Closes #75

@rmcdaniel

Copy link
Copy Markdown
Member Author

Source qualification against an untouched published Server image passed before merge. In an isolated Docker project on 2026-09-26 09:56–09:57 UTC, Server 2.4.9 durableworkflow/server@sha256:5d435d14fdbe3acc991ae591a155864f132cefbfbf1b53b724a8e7b006a91612 (image ID sha256:de84505f168e5ef492544a60782f12b6766f702365423401526cd537b50cffc3, PHP 8.3.35) ran with MySQL mysql@sha256:7dcddc01f13bab2f15cde676d44d01f61fc9f99fe7785e86196dfc07d358ae2b and Redis redis@sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499. The only override set workflow/activity and query wait limits to zero so the published Server emitted its real typed 429 contract. No customer or shared state was used.

The probe installed dependencies in a disposable Python 3.12 container and loaded candidate SDK source 2458e2bef29a45c099866170f524fe8c71ab4a17 read-only. After worker registration, workflow, activity, and query polls each received Server's exact *_task kind, made one HTTP request, and parsed the advertised one-second backoff. All 3/3 checks passed. This is source qualification; the same fixture will be rerun with the exact published PyPI wheel after release. The project's containers and volumes will be removed after that run.

All PR checks now pass, including Python 3.10–3.12, isolated Server integration, package metadata/build, lint, docs, regression corpus, public boundary, and target-branch qualification.

@rmcdaniel
rmcdaniel merged commit 20a0983 into main Sep 26, 2026
13 checks passed
@rmcdaniel
rmcdaniel deleted the fix/poll-backpressure-server-kind-75 branch September 26, 2026 09:57
@rmcdaniel

Copy link
Copy Markdown
Member Author

Release follow-through complete: 2.3.3 is published from merge commit 20a0983. Exact PyPI wheel hash, real published Server 2.4.9 workflow/activity/query poll outcomes, and verified fixture teardown are recorded on #75: #75 (comment). Cloud Dev requalification remains private follow-up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Handle typed poll capacity backpressure without warning or duplicate transport retries

2 participants