[omniORB] Hanging pings, transient exceptions, large timeouts on return
Stefan Winterstein
winter@dfki.de
Wed, 19 Apr 2000 12:49:34 +0200
I'm having problems with timeouts/hangups.
Scenario:
- Server: omniORB 2.8.0, Linux (RedHat 6.1), client: Visibroker/Java 3.4
- Client deposits a callback interface on the server which has a
ping() method.
- The server periodically checks client presence via the callback ping
method.
Now we are testing what happens when we "pull the plug" of the network
at various times.
1) Disconnect client physically when no request is running:
Some time later, the server wants to ping the disconnected
client. Default behaviour of omniORB is that ping hangs for a "very
long time".
We got around this by using "-ORBclientCallTimeOutPeriod 3
-ORBscanGranularity 3" and installing a transient exception handler
which returns "0". Now we get an exception from a hanging ping after 3
seconds and can continue. Fine.
With these modifications, we run case 2:
2) Disconnect client physically while a request is _running_:
The client issues a request to the server which takes a long time
(sleep(15)) to return its result. During this time (i.e before the
result is returned), we pull the plug for the client. Also, another
server thread tries to ping the client before the request result is
returned.
Now, the ping hangs for about 13 minutes. Our transient exception
handler is not called.
How can I avoid this?
Regards,
-Stefan