thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rush Manbert <r...@manbert.com>
Subject Re: AW: Re: ECONNRESET errors
Date Fri, 08 May 2009 18:25:41 GMT

On May 8, 2009, at 10:55 AM, Patrick Schlangen wrote:

> Hi!
>
>> So, to clarify, do you see ECONNRESET errors when your CentOS client
>> talks to your Mac server? Or do you only see it when the Mac client
>> talks to either server?
>
> I did some further testing with a simple ping service and a client  
> which makes connections in a loop.
> I found out the following (I was partially wrong in my first mail,  
> sorry):
>
> Service: Mac OS, Client: Mac OS => Problem occurs on the service side
> Service: Mac OS, Client: Linux => Problem DOES NOT seem to occur (!)
> Service: Linux, Client: Linux => Problem DOES NOT seem to occur
> Service: Linux, Client: Mac OS => Problem DOES NOT seem to occur
>
> And to make the whole thing even more strange:
> 1. Start service on Mac OS
> 2. Start connection loop on a Linux client
> => Problem does not appear.
> 3. Keep the connection loop on the Linux client running and start  
> the connection loop on a Mac OS machine, too.
> => Problem does appear on the service side and the Linux (!!) client  
> (!) suddenly starts to emit the error messages, too!

Hmmm... strange behavior indeed.

Clients and servers share the same underlying TSocket implementation,  
so both can see ECONNRESET on either read() or peek(), and the TSocket  
just throws and lets the upper layers catch the error. In the case of  
TSimpleServer, it specifically catches the error and displays the  
misleading "client died" message. The client didn't die, he just  
closed the socket. (But the socket read DID see ECONNRESET for some  
reason. I have verified that to be true.) The other servers catch the  
TTransportException and do different things with it. In particular,  
the TThreadPoolServer just ignores it, so you never see the ECONNRESET  
error when you use that one.

More questions:
In the case of Mac client talking to Mac service, are they on the same  
machine and using 127.0.0.1?
If so, is it possible to run them on different machines?

Best regards,
Rush

Mime
View raw message