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

Igor Lautar igor.lautar at hermes-softlab.com
Tue Aug 11 14:33:00 BST 2009


On Tuesday 11 August 2009 13:21:52 Duncan Grisby wrote:
> On Wednesday 5 August, Igor Lautar wrote:
> > We are hunting down a problem with our client SW using omniORB (client
> > and server are v4.1.1 on windows) for communication.
>
> Can you update to 4.1.4?  That has a number of bug fixes that may be
> relevant.

Update is not a big problem, will try to reproduce with 4.1.4 (see other mail 
on list, had some luck on actually getting to this state).

> Yes, it can happen. When omniORB makes a call, it sends data on a TCP
> connection, then blocks waiting for the response. If the server dies,
> TCP can fail to notice, and the OS may leave the recv() call blocked for
> ever. There's not much omniORB can do in this situation, other than have
> a call timeout.

Yeah, this is how I thought about it as well.

> You could try setting the SO_KEEPALIVE socket option on omniORB's
> connections, by adding it to src/lib/omniORB/orbcore/tcp/tcpEndpoint.cc
> where it sets other options. That will check the connection if it's been
> idle for a long time.

Hmm, but SO_KEEPALIVE would not help in case where ORB closes connections 
after connection idle time?

Some calls we make can take a long time (could be improved by making these 
calls async), more than idle time on connections.

But we also make a lot of connection, so I'm not sure increasing IDLE time 
would be a good idea. One server can have 500+ connections at the same time.

Thx,
Igor



More information about the omniORB-list mailing list