From ac9508202157630e19a09ad5f8cf33bc50f5b53f Mon Sep 17 00:00:00 2001 From: wolff1 Date: Wed, 18 Mar 2009 21:09:12 +0000 Subject: ChangeLogTag: Wed Mar 18 21:06:23 UTC 2009 Friedhelm Wolf --- TAO/ChangeLog | 24 ++++++++++++++++++++++ .../FLARe/Worker/Client_Timer_Handler.cpp | 21 +++++++++++++++---- .../FaultTolerance/FLARe/Worker/Worker.mpc | 4 ++-- .../FaultTolerance/FLARe/Worker/Worker_i.cpp | 9 ++++---- .../FaultTolerance/FLARe/Worker/client.cpp | 4 +++- .../FaultTolerance/FLARe/Worker/server.cpp | 2 ++ TAO/orbsvcs/orbsvcs/LWFT/ReplicationManager.cpp | 5 ++++- .../RTCORBA/RT_Invocation_Endpoint_Selectors.cpp | 4 ++-- 8 files changed, 58 insertions(+), 15 deletions(-) diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 9f9490fd7b7..94c48321cda 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,27 @@ +Wed Mar 18 21:06:23 UTC 2009 Friedhelm Wolf + + * orbsvcs/orbsvcs/LWFT/ReplicationManager.cpp: + + Removed triggering of a process failure in case of a failed + StateSynchronizationAgent to prevent duplicate notifications due + to HostMonitor messages. + + * orbsvcs/examples/FaultTolerance/FLARe/Worker/Worker_i.cpp + * orbsvcs/examples/FaultTolerance/FLARe/Worker/Client_Timer_Handler.cpp: + + Fixed behavioral bugs. + + * orbsvcs/examples/FaultTolerance/FLARe/Worker/client.cpp + * orbsvcs/examples/FaultTolerance/FLARe/Worker/Worker.mpc + * orbsvcs/examples/FaultTolerance/FLARe/Worker/server.cpp + + Added RTCORBA code to client and server. + + * tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp: + + Removed throw statements that interfere with the interceptor + framework. + Tue Mar 17 21:37:47 UTC 2009 Friedhelm Wolf * orbsvcs/examples/FaultTolerance/FLARe/Worker/client.cpp diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Client_Timer_Handler.cpp b/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Client_Timer_Handler.cpp index daf2eb3636e..6e1ffafb619 100644 --- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Client_Timer_Handler.cpp +++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Client_Timer_Handler.cpp @@ -4,6 +4,8 @@ #include #include "Client_Timer_Handler.h" #include "WorkerC.h" +#include "ace/Reactor.h" +#include "tao/ORB_Core.h" extern double execution_time; @@ -86,11 +88,22 @@ Client_Timer_Handler::handle_timeout (const ACE_Time_Value &, return 1; } - if ((max_iterations_ > 0) && (++invocations_ >= max_iterations_)) + try { - worker_->stop (); - - orb_->shutdown (); + if ((max_iterations_ > 0) && (++invocations_ >= max_iterations_)) + { + worker_->stop (); + + orb_->orb_core ()->reactor ()->cancel_timer (this); + + orb_->shutdown (); + } + } + catch (CORBA::Exception & ex) + { + ACE_DEBUG ((LM_WARNING, + "Client_Timer_Handler::handle_timeout () after run_task - " + "caught: %s", ex._info ().c_str ())); } return 0; diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Worker.mpc b/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Worker.mpc index e5f97534bd7..0166a030785 100644 --- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Worker.mpc +++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Worker.mpc @@ -9,7 +9,7 @@ project(*idl): taoidldefaults { custom_only = 1 } -project(*Server): lwft_server, lwft_client, naming { +project(*Server): lwft_server, lwft_client, naming, rtcorba { after += *idl libpaths += $(CUTS_ROOT)/lib @@ -30,7 +30,7 @@ project(*Server): lwft_server, lwft_client, naming { } } -project(*Client): lwft_client, naming { +project(*Client): lwft_client, naming, rtcorba { after += *idl Source_Files { diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Worker_i.cpp b/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Worker_i.cpp index 9e2a50a019a..e7806502566 100644 --- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Worker_i.cpp +++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/Worker_i.cpp @@ -21,7 +21,7 @@ Failure_Task::svc (void) condition_.wait (); } - orb_->shutdown (); + orb_->shutdown (true); return 0; } @@ -71,7 +71,7 @@ Worker_i::run_task (CORBA::Double execution_time) timer_.elapsed_time (last_execution_time_); - ACE_DEBUG ((LM_TRACE, "le=%d\n", last_execution_time_.msec ())); + ACE_DEBUG ((LM_TRACE, "x=%d ", last_execution_time_.msec ())); task_.signal (); @@ -81,7 +81,6 @@ Worker_i::run_task (CORBA::Double execution_time) void Worker_i::stop () { task_.stop (); - this->orb_->shutdown (); } void @@ -95,7 +94,7 @@ Worker_i::set_state (const CORBA::Any & state_value) state_ = value; else ACE_DEBUG ((LM_WARNING, - "Worker_i::set_state () " + "(%P|%t) Worker_i::set_state () " "could not extract state value from Any.")); ACE_DEBUG ((LM_TRACE, "Worker_i::set_state (%d) called.\n", value)); @@ -110,7 +109,7 @@ Worker_i::get_state () // create intermediate object with the value CORBA::Long value = state_; - ACE_DEBUG ((LM_DEBUG, "Worker_i::get_state returns %d.\n", value)); + ACE_DEBUG ((LM_DEBUG, "(%P|%t) Worker_i::get_state returns %d.\n", value)); // insert value into the any object *state <<= value; diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/client.cpp b/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/client.cpp index 885a0270812..dde0f65d562 100644 --- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/client.cpp +++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/client.cpp @@ -9,6 +9,8 @@ #include "ace/Reactor.h" #include "tao/ORB_Core.h" +#include "tao/RTCORBA/RTCORBA.h" + const ACE_TCHAR *ior1 = ACE_TEXT("file://test.ior"); unsigned long iterations = 0; unsigned long log_start = 0; @@ -129,7 +131,7 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[]) orb->run (); - orb->orb_core ()->reactor ()->cancel_timer (&timeout_handler); + // orb->orb_core ()->reactor ()->cancel_timer (&timeout_handler); } catch (const CORBA::Exception& ex) { diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/server.cpp b/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/server.cpp index 72ff402dc4e..38e04889b32 100644 --- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/server.cpp +++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/Worker/server.cpp @@ -14,6 +14,8 @@ #include "orbsvcs/orbsvcs/LWFT/LWFT_Client_Init.h" #include "orbsvcs/Naming/Naming_Client.h" +#include "tao/RTCORBA/RTCORBA.h" + std::string ior_output = "test1.ior"; long invocations = 0; diff --git a/TAO/orbsvcs/orbsvcs/LWFT/ReplicationManager.cpp b/TAO/orbsvcs/orbsvcs/LWFT/ReplicationManager.cpp index 2748ca9f59e..347db876543 100644 --- a/TAO/orbsvcs/orbsvcs/LWFT/ReplicationManager.cpp +++ b/TAO/orbsvcs/orbsvcs/LWFT/ReplicationManager.cpp @@ -1577,10 +1577,13 @@ ReplicationManager_i::send_state_synchronization_rank_list (void) ACE_CString process_id = al_iter->key (); - (void) state_synchronization_agent_map_.unbind (al_iter); + state_synchronization_agent_map_.unbind (al_iter); + al_iter = tmp_it; +#ifdef ERRORDETECTION_THROUGH_STATE_SYNCH_AGENT_FAILURES this->proc_failure (process_id.c_str ()); +#endif ACE_DEBUG ((LM_TRACE, "RM: A state synchronization agent (pid=%s) died.\n", diff --git a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp index 0a95d7cdddf..dde24c0455c 100644 --- a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp +++ b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp @@ -49,7 +49,7 @@ TAO_RT_Invocation_Endpoint_Selector::select_endpoint ( // If we get here, we completely failed to find an endpoint selector // that we know how to use, so throw an exception. - throw ::CORBA::TRANSIENT (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO); + // NO NO throw ::CORBA::TRANSIENT (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO); } else { @@ -132,7 +132,7 @@ TAO_RT_Invocation_Endpoint_Selector::select_endpoint_based_on_client_protocol_po // If we get here, we found at least one pertinent profile, but no // usable endpoints. - throw ::CORBA::TRANSIENT (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO); + // throw ::CORBA::TRANSIENT (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO); } -- cgit v1.2.1