Yuxuan Wang created THRIFT-5459:
-----------------------------------
Summary: Adding a new exception to an endpoint is kinda breaking
in go
Key: THRIFT-5459
URL: https://issues.apache.org/jira/browse/THRIFT-5459
Project: Thrift
Issue Type: Bug
Components: Go - Compiler
Affects Versions: 0.14.2
Reporter: Yuxuan Wang
Assignee: Yuxuan Wang
Say we have a foo endpoint with definition:
{code:java}
service Foo {
FooResponse foo(1: FooRequest request) throws(1: Error1 error1);
}{code}
And we add a new exception to it later:
{code:java}
service Foo {
FooResponse foo(1: FooRequest request) throws(1: Error1 error1, 2: Error2
error2);
}
{code}
And when a client hasn't updated to the updated version, and server returns
error2, the client will actually get both nil response and nil error.
I checked python version's implementation, and the compiler generated code will
actually avoid this situation:
{code:java}
...
if result.success is not None:
return result.success
if result.error1 is not None:
raise result.error1
raise TApplicationException(TApplicationException.MISSING_RESULT, "foo failed:
unknown result"){code}
We need to do the same in go.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)