Skip to content

Conversation

@kharus
Copy link

@kharus kharus commented Mar 13, 2015

TSocket supports only one timeout field so setting timeout or invoking
TSocket.setTimeout sets both timeout field and sets underlying java
socket's socket timeout.
TSocket is set up with cpConfig.getConnectTimeout() which sets
TSocket.timeout_ to connection timeout from Astyanax config which is as
expected but also it set's underlying java socket timeout ot connection
timeout.
Later during ThriftConnection#setTimeout both timeout and java socket
timeout set to cpConfig.getSocketTimeout.
During transport.open then socket timeout used as a connection timeout
which is not what expected.
This fix moves ThriftConnection#setTimeout to later stage so socket is
open using connection timeout and later java socket's socket timeout is
set to cpConfig.getSocketTimeout.

TSocket supports only one timeout field so setting timeout or invoking
TSocket.setTimeout sets both timeout field and sets underlying java
socket's socket timeout.
TSocket is set up with cpConfig.getConnectTimeout() which sets
TSocket.timeout_ to connection timeout from Astyanax config which is as
expected but also it set's underlying java socket timeout ot connection
timeout.
Later during ThriftConnection#setTimeout both timeout and java socket
timeout set to cpConfig.getSocketTimeout.
During transport.open then socket timeout used as a connection timeout
which is not what expected.
This fix moves ThriftConnection#setTimeout to later stage so socket is
open using connection timeout and later java socket's socket timeout is
set to cpConfig.getSocketTimeout.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant