Defect
The published 2.0.8 engine records terminal activity timeouts with Workflow\V2\Exceptions\ActivityTimeoutException, but that class does not exist. Replaying the resumed workflow fails with UnresolvedWorkflowFailureException instead of delivering the timeout to workflow code. Catch/finally recovery and cleanup do not run, and the workflow remains waiting with a failed workflow task.
Reproduction
- Start a workflow with an activity and a schedule-to-close timeout.
- Let an activity fail once and schedule a retry.
- Advance beyond the schedule-to-close deadline before processing the retry, then run the normal repair pass.
- Process the resumed workflow task. Failure restoration rejects the missing exception class.
The same missing class name is emitted by the activity timeout enforcer, local-activity executor, and workflow-task bridge.
Acceptance
- Restore activity timeout failures as a concrete catchable runtime exception, including existing persisted failures without an exception-type field.
- Prove workflow catch/finally handling and terminal behavior after reloading persisted history.
- Cover local-activity timeout restoration as well as ordinary activity timeouts.
- Preserve timeout classification and existing serialized class identity; no application-specific exception mapping workaround.
- Publish a patch and verify the consuming application regression.
Defect
The published 2.0.8 engine records terminal activity timeouts with
Workflow\V2\Exceptions\ActivityTimeoutException, but that class does not exist. Replaying the resumed workflow fails withUnresolvedWorkflowFailureExceptioninstead of delivering the timeout to workflow code. Catch/finally recovery and cleanup do not run, and the workflow remains waiting with a failed workflow task.Reproduction
The same missing class name is emitted by the activity timeout enforcer, local-activity executor, and workflow-task bridge.
Acceptance