This is an automated email from the ASF dual-hosted git repository. dcelasun pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/thrift.git
commit bcae3bb52f976ce245ad77dfb060e5776d67ce85 Merge: 8b8633e e79f764 Author: Duru Can Celasun <[email protected]> AuthorDate: Thu Jun 18 22:09:33 2020 +0100 THRIFT-5233: Handle I/O timeouts in go library (#2181) Client: go As discussed in the JIRA ticket, this commit changes how we handle I/O timeouts in the go library. This is a breaking change that adds context to all Read*, Write*, and Skip functions to TProtocol, along with the compiler change to support that, and also adds context to TStandardClient.Recv, TDeserializer, TStruct, and a few others. Along with the function signature changes, this commit also implements context cancellation check in the following TProtocol's ReadMessageBegin implementations: - TBinaryProtocol - TCompactProtocol - THeaderProtocol In those ReadMessageBegin implementations, if the passed in context object has a deadline attached, it will keep retrying the I/O timeout errors, until the deadline on the context object passed. They won't retry I/O timeout errors if the passed in context does not have a deadline attached (still return on the first error). CHANGES.md | 2 + compiler/cpp/src/thrift/generate/t_go_generator.cc | 140 ++++----- lib/go/test/tests/client_error_test.go | 246 +++++++-------- lib/go/test/tests/optional_fields_test.go | 79 ++--- lib/go/test/tests/protocol_mock.go | 336 ++++++++++----------- lib/go/test/tests/required_fields_test.go | 46 +-- lib/go/thrift/application_exception.go | 48 +-- lib/go/thrift/binary_protocol.go | 185 ++++++------ lib/go/thrift/client.go | 20 +- lib/go/thrift/compact_protocol.go | 117 +++---- lib/go/thrift/debug_protocol.go | 168 +++++------ lib/go/thrift/deserializer.go | 17 +- lib/go/thrift/header_protocol.go | 184 +++++------ lib/go/thrift/header_transport.go | 39 ++- lib/go/thrift/header_transport_test.go | 6 +- lib/go/thrift/json_protocol.go | 158 +++++----- lib/go/thrift/json_protocol_test.go | 62 ++-- lib/go/thrift/multiplexed_protocol.go | 10 +- lib/go/thrift/protocol.go | 134 ++++---- lib/go/thrift/protocol_test.go | 82 ++--- lib/go/thrift/serializer.go | 8 +- lib/go/thrift/serializer_test.go | 10 +- lib/go/thrift/serializer_types_test.go | 241 +++++++-------- lib/go/thrift/simple_json_protocol.go | 147 ++++----- lib/go/thrift/simple_json_protocol_test.go | 66 ++-- lib/go/thrift/simple_server.go | 2 +- lib/go/thrift/transport_exception.go | 14 + lib/go/thrift/transport_exception_test.go | 31 +- 28 files changed, 1342 insertions(+), 1256 deletions(-)
