[omniORB] Proper way for orderly server process shutdown?
   
    David Riddoch
     
    djr@uk.research.att.com
       
    Tue, 13 Jul 1999 10:28:01 +0100 (GMT)
    
    
  
On Tue, 13 Jul 1999 Wil_Evers@doosys.com wrote:
> > It applies to both impl_shutdown() and destroy().
> 
> > The best way to shut down the ORB in response to a method invocation is
> > two spawn a new thread to do the work.  Thus the CORBA call can complete
> > and allow the shutdown to proceed.
> 
> I'm confused now.  The example code Sai-Lai submitted in this mailing list
> thread contains a call to boa->impl_shutdown() in a servant implementation,
> which, at least with Sai-Lai's patch, runs without any problems, as long as
> the method calling impl_shutdown() is declared as oneway.  Furthermore,
> Sai-Lai wrote...
> 
> > What BOA::destroy() (or impl_shutdown) does is to shutdown all incoming
> > socket. The server threads per connection should notice the socket state
> > and exit themselves.
> 
> ...which seems to imply that calling impl_shutdown() in a servant
> implementation is a safe thing to do.
I am not 100% up to speed with this bit of the code.  Therefore what
Sai-Lai says is the final word on the matter.  Perhaps the documentation
hasn't yet caught up with the implementation.
I think my solution is probably the safest to use though, as it will work
whether or not you are allowed to call impl_shutdown() from a servant
implementation, and whether or not it is a one way call.
David