[ 
https://issues.apache.org/jira/browse/THRIFT-5327?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17267015#comment-17267015
 ] 

A.Hari Venkata Ramana commented on THRIFT-5327:
-----------------------------------------------

Hi Mario

We could not reproduce this issue with the client and server we have in our 
test environment but this happens only at a customer site. We are yet to get 
the differences between our and the customer environment but the only 
observation we have is the junk characters visible in the IP part of the client 
as mentioned in the description for the jira. The issue doesnt seem to happen 
when the IP is printed in proper characters on the server side.

I believe the client IP as per the following on server gets extracted from the 
thrift payload data that the client sends to the server. Are we correct?

connInfo.input->getInputTransport()->*getOrigin*()

 

If the above assumption is correct then one way to reproduce the scenario is to 
corrupt this Ip coming from the client and see if the thrift server takes times 
to send back Server Heelo to client.

I will post more update once i hear on the environment differences on the 
customer side compared to our local test environment.

 

Thanks

Hari

 

> ServerHello is sent with a delay from thrift
> --------------------------------------------
>
>                 Key: THRIFT-5327
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5327
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.13.0
>         Environment: C++ Application running on linux x86_64
>            Reporter: A.Hari Venkata Ramana
>            Priority: Major
>
> I have a C++ environment which uses thrift for server. Server is of type 
> TThreadPoolServer with TBufferedTransportFactory as transport and  
> TBinaryProtocolFactory as protocol. Clients get connected to this server and 
> this happens via TLS.  We are using thrift server with version 0.13.0 on the 
> server end. 
>  
> In one of the environments where a client using thrift (version 0.10.0), the 
> client Hello is sent as part of initial TLS negotiation. We have observed 
> that the server Hello is sent after around 25-30 seconds after the client 
> Hello is received by the server. 
>  
> In these cases where delay is observed on server end we are printing the 
> client origin details, ie., the server ip of client and the port from which 
> it is connecting to the server.
>  
> functionXXX(const ::apache::thrift::TConnectionInfo& connInfo){
>     std::string origin = connInfo.input->getInputTransport()->*getOrigin*();
>     printf("CONNECTED: %s\n", origin.c_str() );
>  
>    .......}
> In cases where the ServerHello is delayed from thrift, we see the junk 
> characters in prints from the above code as shown below:
>  
> { Info = "CONNECTED:  ����:52089"} 
>  
> { Info = "CONNECTED: ����:52465"}
> { Info = "CONNECTED: ����:55027"} 
> { Info = "CONNECTED: ����:59066"} 
> In cases where the IP address of the client is shown as normal characters (as 
> shown below) we dont see any delay in the serverHello sent from the thrift 
> server and it just takes few milli seconds to send the serverHello back to 
> client.
>  
>  \{ Info = "CONNECTED: 172.30.1.41:46573"}
>  
> Looking at the change history we see the following change done in thrift 
> 0.13.0:
>  
> - [THRIFT-4762](https://issues.apache.org/jira/browse/THRIFT-4762) - cpp: 
> TTransport::getOrigin() is now const
>  
> Could this be the cause of the delay from the thrift server in sending the 
> Server Hello back to clients as part of TLS negotiation?
>  
> Any pointers here would be very useful.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to