[omniORB] question on behavior of client on server restart - possible hang?

Igor Lautar igor.lautar at hermes-softlab.com
Tue Aug 11 16:39:51 BST 2009


On Tuesday 11 August 2009 15:33:53 Duncan Grisby wrote:
> From omniORB's point of view, a connection where the client is blocked
> waiting for a reply from the server is not "idle", even though there's
> no traffic. A connection is only idle (and a candidate for closure) if
> there are no calls in progress on it.
>
> Despite its name, SO_KEEPALIVE is actually there to kill a TCP
> connection if the network breaks, not to keep the connection alive.
>
> The situation you're in that the client sends a request and the server
> sends one or more TCP ACKs so the client knows the data has arrived.
> Now the client is waiting for the server to reply, and there is no
> traffic at all on the TCP connection. The nature of TCP means that if
> the network breaks or the server is uncleanly shut down, the client will
> not receive any indication of that, so as far as it's concerned, the
> server might still be there. SO_KEEPALIVE sends a test packet every once
> in a while, so the client will notice if the server is no longer
> reachable, and will close the TCP connection.

Thx for explanation.

So this would have side-effect that connections could brake (more often) if 
network goes down for few seconds? As keep_alive would not reach server where 
case where this is not send, survives downtime?

It could be worthwhile to make it configurable, maybe I'll get around to make 
a patch... At least for me, it seams useful under certain circumstances. But 
in our case, timeout is better solution.

Regards,



More information about the omniORB-list mailing list