[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