[omniORB] Shutting down problem

Duncan Grisby dgrisby@uk.research.att.com
Mon, 19 Mar 2001 15:03:42 +0000


On Monday 19 March, David Hyde wrote:

> The question that I ask, though, is slightly different.  What happens to
> CORBA requests that are being dispatched in another object in the same
> process?  Because the call that results in orb->shutdown() comes in on its
> own thread then I assume that calls onto other objects might be terminated
> mid op, which could result in unpredictable behaviour.  I can think of some
> ways to protect against this - synchronisation objects around every single
> call or using a work_pending() / perform_work() loop with a flag to break
> out of this when the call to stop is called.

The ORB Interface chapter of the CORBA specification says:

  "While the ORB is in the process of shutting down, the ORB operates
   as normal, servicing incoming and outgoing requests until all
   requests have been completed. An implementation may impose a time
   limit for requests to complete while a shutdown is pending."

It's essentially impossible to terminate a server up-call, so omniORB
will never time those out. It will only time-out client calls if the
normal call timeout has been set, in which case the call will end in
exactly the same way as if the ORB was not shutting down.

So, basically, you never have to worry about things being cut-off
unexpectedly due to a shutdown.

Cheers,

Duncan.

-- 
 -- Duncan Grisby  \  Research Engineer  --
  -- AT&T Laboratories Cambridge          --
   -- http://www.uk.research.att.com/~dpg1 --