[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