[omniORB] blocking proxy calls

Sai-Lai Lo S.Lo@orl.co.uk
03 Nov 1998 19:09:19 +0000


>>>>> Andreas Koehler writes:

> I observed, that crashed servers (kill -9 ...) may hang clients proxy
> calls that are active during server crash.
> Is there a workaround possible? Is there something wrong with the
> exception handling or some timeouts?

> PS: We use LINUX 2.0.33 with egcs 1.1b and omniORB 2.6.1!
 
The clients should not hang because of the server crash. Here is what is
supposed to happen:

The client OS should have detected the shutdown of the TCP connection,
causes the omniORB runtime to fail on socket send/recv. The runtime throws
a COMM failure exception. This exception is caught in the proxy
code. Because this connection is a cached connection, the proxy retries the
call once more. This causes the ORB runtime to try to establish a new
connection.  If the server machine is still up and running, the connection
request would be refused (because no process is listening on the
destination port).This causes the ORB runtime to throw a COMM failure
again. This time the proxy would not retry and would propagate the
exception to the application.

I'm insterested in knowing what is going on in the client. If the hang is
reproducable, you may want to insert some tracing in the proxy operation to
see if the proxy catches the COMM failure exceptions properly.

You may want to try compiling your code with optimisation off. It seems to
me you may be hit by a compiler bug...

Sai-Lai



-- 
Dr. Sai-Lai Lo                          |       Research Scientist
                                        |
E-mail:         S.Lo@orl.co.uk          |       Olivetti & Oracle Research Lab
                                        |       24a Trumpington Street
Tel:            +44 223 343000          |       Cambridge CB2 1QA
Fax:            +44 223 313542          |       ENGLAND