[ 
https://issues.apache.org/jira/browse/THRIFT-2488?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chris Bannister updated THRIFT-2488:
------------------------------------

    Affects Version/s: 0.9.1

> Timeouts can leave client in unrecoverable state
> ------------------------------------------------
>
>                 Key: THRIFT-2488
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2488
>             Project: Thrift
>          Issue Type: Bug
>          Components: Go - Library
>    Affects Versions: 0.9.1
>            Reporter: Chris Bannister
>         Attachments: testcase.go, timeout.thrift
>
>
> If you set the timeout on a TSocket and experience a timeout the client will 
> stop reading the struct and return the error as expected.
> But if you use the TSocket again after the remote system has sent the 
> timedout data and the client has received it the client will be unusable 
> because it ends up in a state with incorrect sequence-ids and unexpected data 
> in its buffer.
> This means that the TSocket should be closed if there is any network level 
> error when reading/writing.
> This can also be fixed by making more attempts to read/write when the error 
> is a net.Error and err.Temporary() is true. Could also do something where the 
> client is persistently reading from the socket and discards out of order 
> messages or handle out of order sequences.
> Test case to show the failures attached



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to