Skip to content

Encode failed local-activity exceptions and repair legacy text - #545

Merged
rmcdaniel merged 5 commits into
mainfrom
fix/local-activity-failure-avro
Sep 24, 2026
Merged

rmcdaniel merged 5 commits into
mainfrom
fix/local-activity-failure-avro

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

Fixes #544.

The portable local-activity bridge stored plain exception text while marking execution rows and terminal history snapshots as Avro. Server bootstrap rejected those ordinary failed/timed-out histories after restart. This PR encodes new exceptions using the run codec and adds an idempotent migration for legacy failed, timed-out and cancelled local activities, including empty text. It leaves unrelated history values and other activity modes unchanged.

The new replay fixture covers a failed local activity with an Avro exception through cold replay and embedded history import; the corpus policy confirms it fails against the base implementation and passes with this change. Local PHP 8.4/SQLite focused tests and style checks pass. Published Python SDK 2.3.0 plus Server 2.4.2 reproduced the preflight failure before the fix.

Full supported CI and an installed-artifact restart rehearsal remain required before release.

@rmcdaniel
rmcdaniel marked this pull request as ready for review September 24, 2026 21:30
@rmcdaniel
rmcdaniel merged commit 210682a into main Sep 24, 2026
16 checks passed
@rmcdaniel
rmcdaniel deleted the fix/local-activity-failure-avro branch September 24, 2026 21:40
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.

Failed local activities persist plain exception text under Avro codec and block Server restart

2 participants