You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "SABU DANIEL (JIRA)" <ji...@apache.org> on 2016/02/25 23:01:18 UTC

[jira] [Updated] (THRIFT-3673) API fails with std::exception after a timeout occured in earlier any API call

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

SABU DANIEL updated THRIFT-3673:
--------------------------------
    Description: 
Any API calls( from client to server) fails with std::exception after a timeout occurred in earlier API call.

Steps:
1) Call a Server API which doesn't finish within the socket read timeout
2) This call throws apache::thrift::transport::TTransportException with a TIMEOUT type (Excepted)
3) Call Another API, this fails because the earlier call response data in the socket read buffer.

// Here is the part of generated code in client
void ClientGeneratedClass::recv_[CURRENTAPI_NAME]
{
...
..
..
if (fname.compare([CURRENTAPI_NAME]) != 0) {
    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
    iprot_->readMessageEnd();
    iprot_->getTransport()->readEnd();
  }
}
This iprot_->skip doesn't seems to be cleaning the read buffer correctly.

Please advise any workaround or solution for this.

  was:
Any API calls( from client to server) fails with std::exception after a timeout occurred in earlier API call.

Steps:
1) Call a Server API which doesn't finish within the socket read timeout
2) This call throws apache::thrift::transport::TTransportException with a TIMEOUT type (Excepted)
3) Call Another API, this fails because the earlier call response data in the socket read buffer.

// Here is the part of generated code in client
void ClientGeneratedClass::recv_[CURRENTAPI_NAME]
{
...
..
..
if (fname.compare([CURRENTAPI_NAME]) != 0) {
    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
    iprot_->readMessageEnd();
    iprot_->getTransport()->readEnd();
  }
}
This iprot_->skip doesn't seems to be cleaning the read buffer correctly.




> API fails with std::exception after a timeout occured in earlier any API call
> -----------------------------------------------------------------------------
>
>                 Key: THRIFT-3673
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3673
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.9.1
>         Environment: Windows
>            Reporter: SABU DANIEL
>            Priority: Critical
>
> Any API calls( from client to server) fails with std::exception after a timeout occurred in earlier API call.
> Steps:
> 1) Call a Server API which doesn't finish within the socket read timeout
> 2) This call throws apache::thrift::transport::TTransportException with a TIMEOUT type (Excepted)
> 3) Call Another API, this fails because the earlier call response data in the socket read buffer.
> // Here is the part of generated code in client
> void ClientGeneratedClass::recv_[CURRENTAPI_NAME]
> {
> ...
> ..
> ..
> if (fname.compare([CURRENTAPI_NAME]) != 0) {
>     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
>     iprot_->readMessageEnd();
>     iprot_->getTransport()->readEnd();
>   }
> }
> This iprot_->skip doesn't seems to be cleaning the read buffer correctly.
> Please advise any workaround or solution for this.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)