Skip to content

Avoid decoding activity payloads for metadata projections - #491

Merged
rmcdaniel merged 1 commit into
mainfrom
fix/metadata-only-activity-projection
Sep 8, 2026
Merged

rmcdaniel merged 1 commit into
mainfrom
fix/metadata-only-activity-projection

Conversation

@rmcdaniel

Copy link
Copy Markdown
Member

Change

Adds an opt-in metadata-only RunActivityView mode that omits argument/result fields without downloading external objects. Summary, wait, task, and parallel-completion metadata consumers use it; normal decoded views retain their default behavior and typed-history authority.

Fixes #490 when qualified and released. Paired with durable-workflow/server#142; this PR is not release-ready yet.

Checked

  • Focused metadata cold-model reload plus activity outcome/history-role tests: 18 tests, 67 assertions, passing with SQLite file storage and isolated Redis.
  • Changed-file ECS and PHPStan pass.
  • Candidate combined with Server draft fixes: actual Apache HTTP upload/fetch plus two concurrent 64 MiB workflow result completions and a 64 MiB activity result completion/inspection pass at unchanged PHP 128 MiB and HTTP-container 176 MiB limits.
  • Full CI, remaining transport scenarios, cold HTTP recovery, and package publication still pending.

Initial in-memory SQLite multi-class test execution hit a harness missing-table problem; the same tests pass with a persistent disposable SQLite file. No production changes.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The public PR checks passed at 9778c54. Full source qualification is now running through the existing build workflow: https://github.com/durable-workflow/workflow/actions/runs/34205502106.

Additional regression evidence:

  • The new metadata test fails when only RunSummaryProjector is restored to the target revision: one external read occurs where zero is required. This confirms the regression catches the actual eager-fetch boundary.
  • Combined with Server PR Automation workflow with drag and drop #142, actual Apache requests completed two concurrent 64 MiB encoded workflow results and a 64 MiB standalone activity input/result under the unchanged 128 MiB PHP heap limit and a 176 MiB HTTP-container limit, with no cgroup OOM or OOM kill.
  • After restarting both Server and MySQL, all completed results and reference hashes survived; an independent read-only consumer decoded the full values with official Avro.
  • The combined Server Feature suite passed: 2,058 tests / 41,626 assertions, with 6 deprecations and 3 skips. A subsequent focused scheduled-activity reference test passed separately.

This is composite unreleased source validation, not a published-package or production claim. Full engine CI and package publication remain before the Server dependency can be updated.

@codecov

codecov Bot commented Sep 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.85%. Comparing base (af1b743) to head (9778c54).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #491      +/-   ##
==========================================
- Coverage   87.86%   87.85%   -0.01%     
==========================================
  Files         460      460              
  Lines       62953    62958       +5     
==========================================
+ Hits        55311    55313       +2     
- Misses       7642     7645       +3     
Flag Coverage Δ
v2 87.85% <100.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@rmcdaniel
rmcdaniel merged commit 7d1e6db into main Sep 8, 2026
39 checks passed
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.

Avoid decoding external activity payloads in metadata projections

2 participants