Bug 3054

Summary: Notify_Service Ctrl-C hangs
Product: TAO Reporter: hans.utz
Component: Notification ServiceAssignee: Steve Totten <totten_s>
Status: NEW ---    
Severity: normal    
Priority: P3    
Version: 1.5.10   
Hardware: All   
OS: Linux   

Description hans.utz 2007-08-20 10:54:30 CDT
When running Notify_Service with asynchronous dispatching (as enabled in the svc.conf file in TAO/orbsvcs/Notify_Service) Ctrl-C will hang, if there is still a consumer registered at the service.

The root problem is, that the Notify_Service_Driver::run() blocks on worker_thr_mgr()->wait(). Notify_Service_Driver::shutdown() calls orb_->shutdown(), but does not cancel the dispatching threads, which seem to be managed under the same thread manager.

Consumers can not disconnect after Ctrl-C anymore either, as the orb event loop is already down.

Workaround: Initializing -ORBRunThreads 0 causes ::run() to end up in orb_->run() instead of ...->wait(). This at least works for the "single 
threaded orb" configuration. This can also be achieved by initializing nthreads_  with 0 instead of 1 in the ctor of the _Driver class.
Comment 1 Johnny Willemsen 2007-08-22 13:37:44 CDT
Steve, can OCI have a look at this as maintainers of the notification service?