Skip to content

fix: restore activity timeout failures during replay - #499

Merged
rmcdaniel merged 3 commits into
mainfrom
fix/activity-timeout-replay
Sep 9, 2026
Merged

fix: restore activity timeout failures during replay#499
rmcdaniel merged 3 commits into
mainfrom
fix/activity-timeout-replay

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Sep 9, 2026

Copy link
Copy Markdown
Member

Problem

Terminal activity timeouts record a class that did not exist. The next workflow task blocks on failure restoration instead of running catch/finally code.

Change

  • Add the existing serialized ActivityTimeoutException identity as a concrete RuntimeException subclass.
  • Use its class constant in all three timeout producers without changing persisted identity or classification.
  • Cover persisted failures without application mappings, ordinary/local activity catch and cleanup, and uncaught terminal failures.
  • Add a cold-replay corpus fixture.

Verification

  • Focused unit/regression suite: 47 tests, 1,000 assertions pass (PHP 8.4.25, disk-backed SQLite).
  • Counterfactual against exact base e4146a82: all six new regression cases fail, including missing-class restoration and skipped cleanup. The candidate passes them.
  • ECS and full PHPStan pass.
  • Full main build passed, including database feature matrices and coverage.
  • Published-package verification passed for 2.0.9, including the supported Laravel upgrade matrix.

Fixes #498.

@rmcdaniel
rmcdaniel marked this pull request as ready for review September 9, 2026 08:54
@rmcdaniel
rmcdaniel merged commit c1d425e into main Sep 9, 2026
16 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.

Activity timeout failure cannot be restored during workflow replay

2 participants