Skip to content

Commit 4a35a1d

Browse files
committed
Changed encoding/decoding error code
Signed-off-by: Vitalii Levitskii <[email protected]>
1 parent 23c069f commit 4a35a1d

File tree

6 files changed

+26
-24
lines changed

6 files changed

+26
-24
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
88
## [Unreleased]
99
- Upgraded go version to 1.21, set toolchain version.
1010
- Reverted rpc-caller-procedure value setting.
11+
- errors: encoding/decoding (marshalling/unmarshalling) errors are now returned as CodeInternal (13) instead of CodeInvalidArgument (3).
1112

1213
## [1.72.1] - 2024-03-14
1314
- tchannel: Renamed caller-procedure header from `$rpc$-caller-procedure` to `rpc-caller-procedure`.

pkg/errors/client.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,28 +29,28 @@ import (
2929
)
3030

3131
// RequestBodyEncodeError builds a YARPC error with code
32-
// yarpcerrors.CodeInvalidArgument that represents a failure to encode
32+
// yarpcerrors.CodeInternal that represents a failure to encode
3333
// the request body.
3434
func RequestBodyEncodeError(req *transport.Request, err error) error {
3535
return newClientEncodingError(req, false /*isResponse*/, false /*isHeader*/, err)
3636
}
3737

3838
// ResponseBodyDecodeError builds a YARPC error with code
39-
// yarpcerrors.CodeInvalidArgument that represents a failure to decode
39+
// yarpcerrors.CodeInternal that represents a failure to decode
4040
// the response body.
4141
func ResponseBodyDecodeError(req *transport.Request, err error) error {
4242
return newClientEncodingError(req, true /*isResponse*/, false /*isHeader*/, err)
4343
}
4444

4545
// RequestHeadersEncodeError builds a YARPC error with code
46-
// yarpcerrors.CodeInvalidArgument that represents a failure to
46+
// yarpcerrors.CodeInternal that represents a failure to
4747
// encode the request headers.
4848
func RequestHeadersEncodeError(req *transport.Request, err error) error {
4949
return newClientEncodingError(req, false /*isResponse*/, true /*isHeader*/, err)
5050
}
5151

5252
// ResponseHeadersDecodeError builds a YARPC error with code
53-
// yarpcerrors.CodeInvalidArgument that represents a failure to
53+
// yarpcerrors.CodeInternal that represents a failure to
5454
// decode the response headers.
5555
func ResponseHeadersDecodeError(req *transport.Request, err error) error {
5656
return newClientEncodingError(req, true /*isResponse*/, true /*isHeader*/, err)
@@ -71,5 +71,5 @@ func newClientEncodingError(req *transport.Request, isResponse bool, isHeader bo
7171
parts = append(parts,
7272
fmt.Sprintf("for procedure %q of service %q: %v",
7373
req.Procedure, req.Service, err))
74-
return yarpcerrors.Newf(yarpcerrors.CodeInvalidArgument, strings.Join(parts, " "))
74+
return yarpcerrors.Newf(yarpcerrors.CodeInternal, strings.Join(parts, " "))
7575
}

pkg/errors/errors_test.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
func TestWrapHandlerError(t *testing.T) {
3333
assert.Nil(t, WrapHandlerError(nil, "foo", "bar"))
3434
assert.Equal(t, yarpcerrors.CodeInvalidArgument, yarpcerrors.FromError(WrapHandlerError(yarpcerrors.Newf(yarpcerrors.CodeInvalidArgument, ""), "foo", "bar")).Code())
35+
assert.Equal(t, yarpcerrors.CodeInternal, yarpcerrors.FromError(WrapHandlerError(yarpcerrors.Newf(yarpcerrors.CodeInternal, ""), "foo", "bar")).Code())
3536
assert.Equal(t, yarpcerrors.CodeUnknown, yarpcerrors.FromError(WrapHandlerError(errors.New(""), "foo", "bar")).Code())
3637
}
3738

@@ -51,42 +52,42 @@ func TestEncodeErrors(t *testing.T) {
5152
}{
5253
{
5354
errorFunc: RequestBodyEncodeError,
54-
expectedCode: yarpcerrors.CodeInvalidArgument,
55+
expectedCode: yarpcerrors.CodeInternal,
5556
expectedWords: []string{"request", "body", "encode"},
5657
},
5758
{
5859
errorFunc: RequestHeadersEncodeError,
59-
expectedCode: yarpcerrors.CodeInvalidArgument,
60+
expectedCode: yarpcerrors.CodeInternal,
6061
expectedWords: []string{"request", "headers", "encode"},
6162
},
6263
{
6364
errorFunc: RequestBodyDecodeError,
64-
expectedCode: yarpcerrors.CodeInvalidArgument,
65+
expectedCode: yarpcerrors.CodeInternal,
6566
expectedWords: []string{"request", "body", "decode"},
6667
},
6768
{
6869
errorFunc: RequestHeadersDecodeError,
69-
expectedCode: yarpcerrors.CodeInvalidArgument,
70+
expectedCode: yarpcerrors.CodeInternal,
7071
expectedWords: []string{"request", "headers", "decode"},
7172
},
7273
{
7374
errorFunc: ResponseBodyEncodeError,
74-
expectedCode: yarpcerrors.CodeInvalidArgument,
75+
expectedCode: yarpcerrors.CodeInternal,
7576
expectedWords: []string{"response", "body", "encode"},
7677
},
7778
{
7879
errorFunc: ResponseHeadersEncodeError,
79-
expectedCode: yarpcerrors.CodeInvalidArgument,
80+
expectedCode: yarpcerrors.CodeInternal,
8081
expectedWords: []string{"response", "headers", "encode"},
8182
},
8283
{
8384
errorFunc: ResponseBodyDecodeError,
84-
expectedCode: yarpcerrors.CodeInvalidArgument,
85+
expectedCode: yarpcerrors.CodeInternal,
8586
expectedWords: []string{"response", "body", "decode"},
8687
},
8788
{
8889
errorFunc: ResponseHeadersDecodeError,
89-
expectedCode: yarpcerrors.CodeInvalidArgument,
90+
expectedCode: yarpcerrors.CodeInternal,
9091
expectedWords: []string{"response", "headers", "decode"},
9192
},
9293
}

pkg/errors/server.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,36 +29,36 @@ import (
2929
)
3030

3131
// RequestBodyDecodeError builds a YARPC error with code
32-
// yarpcerrors.CodeInvalidArgument that represents a failure to decode
32+
// yarpcerrors.CodeInternal that represents a failure to decode
3333
// the request body.
3434
func RequestBodyDecodeError(req *transport.Request, err error) error {
3535
return newServerEncodingError(req, nil, false /*isResponse*/, false /*isHeader*/, err)
3636
}
3737

3838
// ResponseBodyEncodeError builds a YARPC error with code
39-
// yarpcerrors.CodeInvalidArgument that represents a failure to encode
39+
// yarpcerrors.CodeInternal that represents a failure to encode
4040
// the response body.
4141
func ResponseBodyEncodeError(req *transport.Request, err error) error {
4242
return newServerEncodingError(req, nil, true /*isResponse*/, false /*isHeader*/, err)
4343
}
4444

4545
// RequestHeadersDecodeError builds a YARPC error with code
46-
// yarpcerrors.CodeInvalidArgument that represents a failure to
46+
// yarpcerrors.CodeInternal that represents a failure to
4747
// decode the request headers.
4848
func RequestHeadersDecodeError(req *transport.Request, err error) error {
4949
return newServerEncodingError(req, nil, false /*isResponse*/, true /*isHeader*/, err)
5050
}
5151

5252
// ResponseHeadersEncodeError builds a YARPC error with code
53-
// yarpcerrors.CodeInvalidArgument that represents a failure to
53+
// yarpcerrors.CodeInternal that represents a failure to
5454
// encode the response headers.
5555
func ResponseHeadersEncodeError(req *transport.Request, err error) error {
5656
return newServerEncodingError(req, nil, true /*isResponse*/, true /*isHeader*/, err)
5757
}
5858

5959
// ExpectEncodings verifies that the given request has one of the given
6060
// encodings, otherwise it returns a YARPC error with code
61-
// yarpcerrors.CodeInvalidArgument.
61+
// yarpcerrors.CodeInternal.
6262
func ExpectEncodings(req *transport.Request, want ...transport.Encoding) error {
6363
got := req.Encoding
6464
for _, w := range want {
@@ -98,7 +98,7 @@ func newServerEncodingError(req *transport.Request, encodings []transport.Encodi
9898
parts = append(parts,
9999
fmt.Sprintf("for procedure %q of service %q from caller %q: %v",
100100
req.Procedure, req.Service, req.Caller, err))
101-
return yarpcerrors.Newf(yarpcerrors.CodeInvalidArgument, strings.Join(parts, " "))
101+
return yarpcerrors.Newf(yarpcerrors.CodeInternal, strings.Join(parts, " "))
102102
}
103103

104104
func newEncodingMismatchError(want []transport.Encoding, got transport.Encoding) error {

transport/grpc/integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ func TestApplicationErrorPropagation(t *testing.T) {
285285
"bad_encoding",
286286
transport.Headers{},
287287
)
288-
require.True(t, yarpcerrors.IsInvalidArgument(err))
288+
require.True(t, yarpcerrors.IsInternal(err))
289289
require.False(t, response.ApplicationError)
290290
})
291291
}

transport/tchannel/handler_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ func TestHandlerFailures(t *testing.T) {
213213
arg2: nil,
214214
arg3: []byte{0x00},
215215
},
216-
wantStatus: tchannel.ErrCodeBadRequest,
216+
wantStatus: tchannel.ErrCodeUnexpected,
217217
newResponseWriter: newHandlerWriter,
218218
recorder: newResponseRecorder(),
219219
wantLogLevel: zapcore.ErrorLevel,
@@ -228,7 +228,7 @@ func TestHandlerFailures(t *testing.T) {
228228
arg2: []byte("{not valid JSON}"),
229229
arg3: []byte{0x00},
230230
},
231-
wantStatus: tchannel.ErrCodeBadRequest,
231+
wantStatus: tchannel.ErrCodeUnexpected,
232232
newResponseWriter: newHandlerWriter,
233233
recorder: newResponseRecorder(),
234234
wantLogLevel: zapcore.ErrorLevel,
@@ -306,7 +306,7 @@ func TestHandlerFailures(t *testing.T) {
306306
"serialization derp",
307307
)))
308308
},
309-
wantStatus: tchannel.ErrCodeBadRequest,
309+
wantStatus: tchannel.ErrCodeUnexpected,
310310
newResponseWriter: newHandlerWriter,
311311
recorder: newResponseRecorder(),
312312
wantLogLevel: zapcore.ErrorLevel,
@@ -391,7 +391,7 @@ func TestHandlerFailures(t *testing.T) {
391391
arg2: nil,
392392
arg3: []byte{0x00},
393393
},
394-
wantStatus: tchannel.ErrCodeBadRequest,
394+
wantStatus: tchannel.ErrCodeUnexpected,
395395
newResponseWriter: newHandlerWriter,
396396
recorder: newFaultyResponseRecorder(),
397397
wantLogLevel: zapcore.ErrorLevel,

0 commit comments

Comments
 (0)