Skip to content

Add opt-in header codec processing - #3165

Draft
Sushisource wants to merge 1 commit into
mainfrom
normalize-header-conversion
Draft

Sushisource wants to merge 1 commit into
mainfrom
normalize-header-conversion

Conversation

@Sushisource

Copy link
Copy Markdown
Member

What was changed

  • Add explicit HeaderEncodingDataConverter, requiring combined converter/codec capability; ordinary CodecDataConverter constructors and defaults are unchanged.
  • Apply codec-only header processing at shared client/worker boundaries, with SDK wrapper forwarding, contextual validation, shared start/update decoding, and tracing serialization preserved.
  • Preserve schedule header round trips, activity header-presence behavior, child destination namespace, and external-storage ordering; avoid duplicate update-with-start processing.
  • Resolve/cache derived codecs once in consuming client constructors and use one recursive header-chain validation pass. Add focused tests, documentation, and changelog notes.

Breaking changes: None. Custom outer converter wrappers must forward the optional header capability or keep the header-encoding converter outermost.
Server PR: Not required.

Why?

Part of temporalio/features#850: normalize opt-in processing of user header payloads without reserializing Payload objects or changing existing defaults.

Checklist

  1. Related issue: Normalize Header Data Conversion across languages features#850 (this PR does not close the cross-SDK issue).
  2. How was this tested:
    • Focused SDK tests across 11 test classes, retained signed-payload workflow tests, and four OpenTracing test classes passed; one existing external-service-only memo test was skipped.
    • Validation compiled/tested the changed sources using a scratch Gradle init override with read-only protobuf sources at the repository's exact pinned revisions. Submodule-update tasks and spotlessApply were excluded because the local proto/protocloud directories are partial.
    • Canonical no-override validation was not run for the final cleanup. Sequential cached Google Java Format 1.24 checks left five discrepancies outside the cleanup hunks unchanged; that CLI check did not use the earlier long-string-reflow exemption.
    • Filename/package/public-type and conflict-marker audits, git diff --check, and byte comparison of the merged files against the tested snapshot passed.
    • Full repository tests and dedicated old-history replay fixtures were not run.
  3. Any docs updates needed? README, public API documentation, and changelog included; migration guidance covers pre-codec header payloads, legacy decoders, and wrapper forwarding.

This branch has not been deployed

No deployments
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