Skip to content

Ship Workflow 2.0.13 projection improvement in Server 2.3.11 - #162

Merged
rmcdaniel merged 3 commits into
mainfrom
fix/workflow-2.0.13
Sep 11, 2026
Merged

Ship Workflow 2.0.13 projection improvement in Server 2.3.11#162
rmcdaniel merged 3 commits into
mainfrom
fix/workflow-2.0.13

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Sep 11, 2026

Copy link
Copy Markdown
Member

Change

Adopt published Workflow 2.0.13 (3fff6e737a92854a48b28dede8f7654f198cf7a5) for durable-workflow/workflow#508. Full monitoring projection now avoids per-row lookup queries and duplicate same-pass activity/timer derivation while preserving configured models, hooks, concurrent upsert recovery, and projection repair.

Prepare Server 2.3.11 / Helm 0.1.90 through the existing source-release synchronizer. Only Workflow changes in the Composer lock; all other dependencies, resource defaults, workloads, and portable contracts are unchanged.

Two CI-only corrections were needed during qualification:

  • The short smoke now allows 3,072 transient polling keys: its 1,000 leased starts can retain 2,000 binding/result keys before empty/in-flight polls and the SDK canary. The 4,096 total-cache ceiling, zero-after-expiry checks, TTLs, admission and paid-soak settings remain unchanged. Diagnosis and original failed run.
  • Feature tests pull the same immutable MinIO digest from upstream Quay after Docker Hub refused it. No image-byte/version change, new credentials or skipped S3 tests. Registry verification.

Verification

  • Workflow full source matrix and published release verification passed.
  • A fresh registry installation of Workflow 2.0.13 passed all 15 focused projection/metadata/cold-reload tests (98 assertions). Reflection verified the tested class came from the installed package, not local source.
  • Source-release consistency, Composer resolution/audit, diff and public-boundary checks passed locally.
  • All checks passed at 9bc9e61b: feature, MySQL/PostgreSQL rolling-upgrade, replay/query HTTP, Helm lint/install, contracts and performance smoke (run).

Delivery

After required checks, publish the immutable image/chart and verify its bundled Workflow identity. Run a published-image workflow/activity/timer/projection check before calling Server delivery complete. No production capacity claim, resource change, or unchanged SDK release is implied.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The first perf smoke failed its transient polling-cache ceiling, not execution correctness: 16/16 SDK Standard Workflows completed with zero errors; 1,000 synthetic starts were accepted; all 24 periodic samples were healthy. Peak polling keys were 2,108 against 2,048; peak total cache was 3,164 against 4,096. All tracked cache keys expired to zero. The 29 remaining ready synthetic tasks are not a drained-task-backlog claim.

The workload retains a binding and replay-result key for each leased poll. Its 1,000-start burst can therefore occupy 2,000 keys before empty/in-flight polls or the independent SDK canary. The samples peak near the end of that burst and then decline; the retained keys expire, as the store contract requires. The old 48-key headroom is too narrow for this workload.

The follow-up commit budgets 3,072 polling keys for this short smoke only, with the rationale beside the setting. The 4,096 total-cache ceiling, zero-after-expiry requirement, workload, TTLs, admission limits, latency checks and paid-soak settings are unchanged. No Server behavior was modified. Existing harness contract checks pass: 28 tests, 446 assertions. The original failed run remains visible; the revised CI must pass before publication.

Original run: https://github.com/durable-workflow/server/actions/runs/34637148480

@rmcdaniel

Copy link
Copy Markdown
Member Author

A separate setup failure affected feature run 34639326380 before PHPUnit started: Docker Hub denied the pinned MinIO image pull. The earlier feature run 34637148533 successfully pulled that exact digest and passed. A direct fresh registry check now reproduces the denial.

Upstream Quay serves the identical sha256:14cea493d9a34af32f524e538b8346cf79f3321eff8e708c1e2960462bd8936e manifest, including the existing amd64 child a1a8bd4a. A complete fresh pull and offline --version invocation succeeded. The follow-up changes only minio/minio@... to quay.io/minio/minio@... in the feature-test workflow. No image/version change, new registry credentials, fallback machinery, or skipped S3 tests. The feature suite will rerun normally on the new head.

@rmcdaniel
rmcdaniel marked this pull request as ready for review September 11, 2026 19:36
@rmcdaniel
rmcdaniel merged commit 14ecd36 into main Sep 11, 2026
14 checks passed
@rmcdaniel

Copy link
Copy Markdown
Member Author

Merged after all checks passed at 9bc9e61. Latest smoke 34639729198 completed 15/15 SDK Standard Workflows with zero errors; 1,000 synthetic starts accepted; tracked polling and total cache drained to zero. Peaks: 1,634 polling keys and 2,480 total cache keys. The 27 ready synthetic tasks remain explicitly distinct from cache cleanup and real SDK completions.

Merge commit 14ecd36 has the exact tested tree. Immutable tag 2.3.11 now points to that commit and starts the repository release workflow. Image/chart publication and published-image follow-through are pending; the tag alone is not delivery proof.

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.

2 participants