Skip to content

Bound failure reports while preserving identity and retry semantics - #142

Merged
rmcdaniel merged 5 commits into
mainfrom
fix/bounded-failure-reports
Oct 23, 2026
Merged

rmcdaniel merged 5 commits into
mainfrom
fix/bounded-failure-reports

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

A multi-megabyte activity failure can exceed the Server request limit and never reach workflow code. Bound outgoing activity, workflow/query-task and terminal/update failure reports, including local attempt messages, without changing claim identity, original type or retry semantics. Defaults are62KiB message including marker,128KiB stack and64KiB combined serialized optional metadata; measure the complete actual JSON body after markers, escaping and payload handling at1MiB or a lower known transport limit.

Expose additive structured activity/workflow-task methods over existing published fields. Avro details stay whole or are omitted explicitly. Schemas without diagnostics use their message for size/omission markers. Local first observation matches committed Server normalization; reporting refusal stays distinct from an application failure. Keep composed one-tick pollers on the normal stack with optional features. Prospective minor4.10.0; existing ActivityError/task literals, Rust1.86, TLS floors, protected OIDC publication and immutable tags remain compatible.

The common62KiB budget reserves compatibility headroom for legacy timeline labels. The underlying derived-summary overflow is separate Core915, which must preserve authoritative failure data.

Validation at dd58dd146f1337c3be24ad18fe65e3bb31d78b58:

  • Rust1.86:742 active all-target/all-feature tests and14doc tests pass, warning-free; formatting passes. Nine public HTTP/fresh-workflow controls include exact final bytes, lower limits learned by payload discovery and cluster_info, unknown metadata, preserved identity/type/retry and unchanged small reports.
  • The normal registry4.9 control fails three unchanged report-size cases:5200138 encoded bytes in normal/cooperative activity reports and18874481 in a workflow-task report. Original inputs and failures remain preserved.
  • Five isolated publishedPHP Server2.11.0 cells pass with all features on the normal thread stack: normal/cooperative/local failures reach workflow code on attempt2 of budget3, retain original type/nonretryable semantics, and match committed history/cold replay; structured3MiB message/stack/validAvro+nested diagnostics and terminal workflow reporting pass. Workflow-task failure returns a recorded receipt with exact identity/retry task; independent task storage confirms original failure_type and visible marker. The original64KiB SQL overflow and pre-fix all-feature stack crash remain separate controls.
  • Exact CI39981293489, CodeQL39981288561 and Sonar39981293546 are in progress. Direct SonarPR142 review reports0 unresolved issues/0hotspots. Publication, normal installed4.10 acceptance and all8guide follow-through remain pending; no tag/release claim.

Refs #141 and durable-workflow/.github#225. Shared parent/other SDKs/embedded acceptance and automatic consumer adoption are separate.

@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel
rmcdaniel marked this pull request as ready for review October 23, 2026 16:00
@rmcdaniel
rmcdaniel merged commit 07e28c9 into main Oct 23, 2026
19 checks passed
@rmcdaniel
rmcdaniel deleted the fix/bounded-failure-reports branch October 23, 2026 16:58
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.

1 participant