Skip to content

feat: retrieve external storage references on inbound payloads - #996

Open
jmaeagle99 wants to merge 1 commit into
mainfrom
extstore-retrieve
Open

jmaeagle99 wants to merge 1 commit into
mainfrom
extstore-retrieve

Conversation

@jmaeagle99

Copy link
Copy Markdown
Contributor

What changed

Inbound payloads now have their external storage references resolved before decoding. When a reference is present but no external storage is configured, it is rejected with TMPRL1105 rather than silently passed through to the codec and payload converter.

  • DataConverter carries an internal ExternalStorage that is propagated onto context-scoped converters.
  • ExternalStorageRunner.Create returns a runner that retrieves references when storage is configured, and one that rejects them with TMPRL1105 when it is not.
  • Retrieval is wired into every inbound consumption site:
    • the workflow, activity, and Nexus workers, ahead of the codec
    • the converter decode funnels (ToSingleValueAsync, ToExceptionAsync), which covers deferred paths such as memos, raw values, and failures.

Testing

  • ConverterExtensionsTests covers decode funnels for reject-when-unconfigured (TMPRL1105) and retrieve-when-configured (the retrieved value surfaces through the decoded value and the reconstructed exception's details).
  • ExternalStorageRunnerTests covers the Create factory: the unconfigured runner rejects references and passes plain payloads through; the configured runner retrieves.
  • DataConverterTests covers ExternalStorage propagation across WithSerializationContext.
  • dotnet test --filter Converters, dotnet format (whitespace + style) clean.

@jmaeagle99
jmaeagle99 requested a review from a team as a code owner October 28, 2026 16:10
@jmaeagle99
jmaeagle99 added this pull request to stack #998 October 28, 2026 18:29

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant