Add ResponseDecodeError for richer client decode failure debugging#73
Merged
Conversation
42e0db6 to
11b5eb8
Compare
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.
Summary
pkg/runtimewith structured fields (StatusCode,ContentType,ContentLength,TargetType,Body) for programmatic inspection of decode failuresclient.tmplto return&ResponseDecodeError{...}instead of genericfmt.Errorf("error decoding response: %w", err)at both error-response and success-response unmarshal paths.Error()to preventPIIleakage into logs, but accessible viaerrors.Asfor developers who need itMotivation
The previous error message -
error decoding response: <unmarshal error>- was hard to debug. It lacked context about what HTTP status was received, what content type the server returned, how large the body was, or what Go type was being targeted. A common suggestion was toinclude the body in the error string, but that risks leaking sensitive data into logs and error tracking systems.
ResponseDecodeError gives everything needed:
.Error()string includes metadata for log-friendly debuggingerrors.Asgives programmatic access to all fields including the raw body, when the developer explicitly opts in