You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Chris Bannister (JIRA)" <ji...@apache.org> on 2014/04/21 12:58:15 UTC

[jira] [Updated] (THRIFT-2488) Timeouts can leave client in unrecoverable state

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