summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp
index f641a312088..3e1c589bbfb 100644
--- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp
+++ b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp
@@ -25,6 +25,9 @@ TAO_LB_Pull_Handler::handle_timeout (
TAO_LB_Location_Map::iterator end =
this->location_map_.end ();
+ if (being == end)
+ return 0; // No work to be done.
+
// Iterate over all registered load monitors.
//
// @todo This could be potentially very slow. Improve concurrent
@@ -60,5 +63,22 @@ TAO_LB_Pull_Handler::handle_timeout (
}
}
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ this->balancing_strategy_->analyze_loads (this->location_map_,
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ // Catch the exception and ignore it.
+
+ if (TAO_debug_level > 0)
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "(%P|%t) Load analysis exception");
+ }
+ ACE_ENDTRY;
+
return 0;
}