tree 6359791188eabd62dc520426c89cc91a4c45bb3b
parent 8b8633e8d805905868f359adf85d18326204a5d5
parent e79f764f09afdfe829a06ca721059d34244d7c20
author Duru Can Celasun <dcelasun@apache.org> 1592514573 +0100
committer GitHub <noreply@github.com> 1592514573 +0100
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJe69gNCRBK7hj4Ov3rIwAAdHIIAGrPCNq7+/jRniFqZqlR7BgK
 jTqck5bq0pPDB5UW+daNULJmYnwjnpCUON4/nCSrE/WDens59qa2yX/3tm7kdKJf
 jYeNXf+C99Xk6r4yoTyJyA/PRfkSUCjdVZEYHBJRy1qTMfmY+H1E4YC+cO7XLYpk
 NrCAes27+bU3EUhG+PzY9I8sKUhS7xIJaoNS1WidenwDiWi9IR1sv0xyOxCQK7U9
 vyXL4e8xH8hmAFWBI54I8NEHyLuevLWXuZMpLKCunYIOYFgUDo0e834UxBNXLFeF
 paVwYOyJeDbJdGRAx6Edu9iddN7dV8Xne6krD0CYcROh59h2M6NVwCWfhz8M6ns=
 =S8Sr
 -----END PGP SIGNATURE-----
 

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).