Bug 2062

Summary: Problem in LoadManager
Product: TAO Reporter: Johnny Willemsen <jwillemsen>
Component: Load BalancerAssignee: DOC Center Support List (internal) <tao-support>
Status: ASSIGNED ---    
Severity: normal    
Priority: P3    
Version: 1.5.1   
Hardware: x86   
OS: Windows NT   

Description Johnny Willemsen 2005-03-15 15:30:55 CST
I am looking why some tests are failing and I see that the LoadBalancer test 
orbsvcs/tests/LoadBalancing/GenericFactory/Application_Controlled is failing in 
all tests.

I have started a debugger and I see a problem in 
orbsvcs/LoadBalancer/LoadManager.cpp. There I see the following code:

      // Activate/register the signal handler that (attempts) to
      // ensure graceful shutdown of the LoadManager so that remote
      // resources created by the LoadManager can be cleaned up.
      TAO_LB_Signal_Handler signal_handler (orb.in (), root_poa.in ());

      if (signal_handler.activate () != 0)
        return -1;

      // @@ There is a subtle race condition here.  If the signal
      //    handler thread shuts down the ORB before it is run, the
      //    below call to ORB::run() will throw a CORBA::BAD_INV_ORDER
      //    exception.
      orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
      ACE_TRY_CHECK;

The signal handler is tried to be activated using the ACE_TP_Reactor and this 
returns a notsup for registering the handler. This then results in the fact 
that the LoadManager is not started and the test fails. 

When I just comment out the check then things start and I get another error 
related to PortableGroup. I have changed something in that library during my 
refactoring so I will debug this further, but can you have a look at this? How 
do you want to handle this, shall I make a bugzilla entry?
Comment 1 Ossama Othman 2005-03-23 12:27:54 CST
I recall someone from OCI, Chad perhaps, suggesting using the WFMO reactor on
Windows to work around the problem.
Comment 2 Johnny Willemsen 2006-06-28 06:01:01 CDT
problems still happens, added an ACE_ERROR_RETURN instead of -1 so that on the
test output it is visible why things don't run