Expose raw Failure and Payload protos on SDK error and result types#2231
Open
brucearctor wants to merge 1 commit intotemporalio:masterfrom
Open
Expose raw Failure and Payload protos on SDK error and result types#2231brucearctor wants to merge 1 commit intotemporalio:masterfrom
brucearctor wants to merge 1 commit intotemporalio:masterfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objective
Fixes #2203 by exposing the full underlying proto data for errors and results from update/activities.
SDK users generally expect to be able to extract all raw details about failures and payloads when high-level helper methods do not cover all use cases (e.g., retrieving stack traces from the CLI without parsing error strings, or getting the original payload representation without relying on a data converter).
Changes
failure()toFailure()on the internaltemporalErrortype, which is embedded in other public error types such asApplicationError,TimeoutError, andActivityError. This allows SDK users to retrieve the underlying*failurepb.Failureobject directly. Adjusted the internalFailureHolderback tofailureHolderto avoid method/field conflicts onNexusOperationError.ValuesPayloadsinterface toconverterand aGetPayloadshelper.Payloads() *commonpb.Payloadsdirectly to theEncodedValueandEncodedValuesinterfaces? Doing so would be a backwards-incompatible breaking change for any users outside ofsdk-gothat have implemented or mocked these interfaces.GetPayloads(encoded interface{}) *commonpb.Payloads, existing implementations won't break, but Temporal's internalEncodedValueimplementations now satisfy the new interface, allowing extraction of the raw*commonpb.Payloads.