diff options
author | mcorino <mcorino@users.noreply.github.com> | 2010-06-17 15:36:00 +0000 |
---|---|---|
committer | mcorino <mcorino@users.noreply.github.com> | 2010-06-17 15:36:00 +0000 |
commit | f24f1a8da7b73204d1460dde2a2b3b0b82311ad5 (patch) | |
tree | 9cfbb7c0a59431ad2a3cdb8bbadb139650d1f84b | |
parent | 12a21da13ce9281e1cc3ebb0a684539689b83442 (diff) | |
download | ATCD-f24f1a8da7b73204d1460dde2a2b3b0b82311ad5.tar.gz |
Thu Jun 17 15:34:10 UTC 2010 Martin Corino <mcorino@remedy.nl>
* DAnCE/tools/Completion/Completion_Counter_Base.inl:
* DAnCE/tools/Completion/Completion_Counter_Base.h:
Added error collection.
* DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
* DAnCE/DomainApplication/Domain_Application_Impl.cpp:
* DAnCE/ExecutionManager/ExecutionManager_Impl.cpp:
Fixed error propagation.
-rw-r--r-- | CIAO/ChangeLog | 11 | ||||
-rw-r--r-- | CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp | 118 | ||||
-rw-r--r-- | CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp | 100 | ||||
-rw-r--r-- | CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.cpp | 4 | ||||
-rw-r--r-- | CIAO/DAnCE/tools/Completion/Completion_Counter_Base.h | 9 | ||||
-rw-r--r-- | CIAO/DAnCE/tools/Completion/Completion_Counter_Base.inl | 11 |
6 files changed, 209 insertions, 44 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index 10230786716..5fd6f86651d 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,3 +1,14 @@ +Thu Jun 17 15:34:10 UTC 2010 Martin Corino <mcorino@remedy.nl> + + * DAnCE/tools/Completion/Completion_Counter_Base.inl: + * DAnCE/tools/Completion/Completion_Counter_Base.h: + Added error collection. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp: + Fixed error propagation. + Thu Jun 17 14:48:02 UTC 2010 Marcel Smit <msmit@remedy.nl> * connectors/dds4ccm/tutorials/Shapes/Tutorial/general.html: diff --git a/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp b/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp index ee43ed5114a..7851c3048b2 100644 --- a/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp +++ b/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp @@ -2,6 +2,7 @@ #include "Domain_Application_Impl.h" #include "DAnCE/Logger/Log_Macros.h" +#include <sstream> namespace DAnCE { @@ -94,8 +95,12 @@ namespace DAnCE this, node_id.c_str (), ex._info ().c_str ())); + std::ostringstream err; + err << node_id.c_str () + << " - CORBA exception starting finishLaunch : " + << ex._info ().c_str (); // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark off node _counter_ptr->decrement_exec_count (); // continue for next node @@ -107,8 +112,11 @@ namespace DAnCE ACE_TEXT("DomainApplication[%@] caught a unknown exception handling node %C\n"), this, node_id.c_str ())); + std::ostringstream err; + err << node_id.c_str () + << " - unknown exception starting finishLaunch"; // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark off node _counter_ptr->decrement_exec_count (); // continue for next node @@ -126,7 +134,9 @@ namespace DAnCE DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DomainApplication_Impl::finishLaunch - ") ACE_TEXT("Propagating StartError for unknown exception caught here\n"))); - CORBA::Exception* start_ex = new Deployment::StartError(); + CORBA::Exception* start_ex = + new Deployment::StartError(this->planUUID_.c_str (), + "unknown exception in finishLaunch"); ::Deployment::AMH_ApplicationExceptionHolder amh_exholder (start_ex); _tao_rh->finishLaunch_excep (&amh_exholder); } @@ -197,8 +207,12 @@ namespace DAnCE this, node_id.c_str (), ex._info ().c_str ())); + std::ostringstream err; + err << node_id.c_str () + << " - CORBA exception starting : " + << ex._info ().c_str (); // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark off node _counter_ptr->decrement_exec_count (); // continue for next node @@ -210,8 +224,11 @@ namespace DAnCE ACE_TEXT("DomainApplication[%@] caught a unknown exception handling node %C\n"), this, node_id.c_str ())); + std::ostringstream err; + err << node_id.c_str () + << " - unknown exception starting"; // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark off node _counter_ptr->decrement_exec_count (); // continue for next node @@ -229,7 +246,9 @@ namespace DAnCE DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DomainApplication_Impl::start - ") ACE_TEXT("Propagating StartError for unknown exception caught here\n"))); - CORBA::Exception* start_ex = new Deployment::StartError(); + CORBA::Exception* start_ex = + new Deployment::StartError(this->planUUID_.c_str (), + "unknown exception in start"); ::Deployment::AMH_ApplicationExceptionHolder amh_exholder (start_ex); _tao_rh->start_excep (&amh_exholder); } @@ -305,8 +324,12 @@ namespace DAnCE this, node_id.c_str (), ex._info ().c_str ())); + std::ostringstream err; + err << node_id.c_str () + << " - CORBA exception starting startLaunch : " + << ex._info ().c_str (); // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark off node _counter_ptr->decrement_exec_count (); // continue for next node @@ -318,8 +341,11 @@ namespace DAnCE ACE_TEXT("DomainApplication[%@] caught a unknown exception handling node %C\n"), this, node_id.c_str ())); + std::ostringstream err; + err << node_id.c_str () + << " - unknown exception starting startLaunch"; // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark off node _counter_ptr->decrement_exec_count (); // continue for next node @@ -396,8 +422,12 @@ namespace DAnCE this, node_id.c_str (), ex._info ().c_str ())); + std::ostringstream err; + err << this->planUUID_.c_str () + << " - CORBA exception starting destroyApplication on node " + << node_id.c_str () << " : " << ex._info ().c_str (); // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark off node _counter_ptr->decrement_exec_count (); // continue for next node @@ -409,8 +439,12 @@ namespace DAnCE ACE_TEXT("DomainApplication[%@] caught a unknown exception handling node %C\n"), this, node_id.c_str ())); + std::ostringstream err; + err << this->planUUID_.c_str () + << " - unknown exception starting destroyApplication on node " + << node_id.c_str (); // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark off node _counter_ptr->decrement_exec_count (); // continue for next node @@ -470,7 +504,17 @@ namespace DAnCE this->da_servant_.in (), this->fail_count ())); - this->dam_ch_ptr_->handle_exception (new Deployment::StartError()); + std::ostringstream err; + err << this->fail_count () << " errors from nodemanagers:\n"; + for (DA_NAM_ReplyHandlerImpl::Counter::errors_type::const_iterator it = this->errors ().begin (); + it != this->errors ().end (); + ++it) + { + err << "\t" << *it << "\n"; + } + this->dam_ch_ptr_->handle_exception ( + new Deployment::StartError(this->da_servant_->getPlanUUID (), + err.str ().c_str ())); } DA_NAM_ReplyHandlerImpl::DA_NAM_ReplyHandlerImpl ( @@ -501,7 +545,9 @@ namespace DAnCE this->da_servant_.in (), this->node_id_.c_str ())); - this->counter_->increment_fail_count (); + std::ostringstream err; + err << this->node_id_.c_str () << " - startLaunch returned nil"; + this->counter_->increment_fail_count (err.str ().c_str ()); } else { @@ -542,11 +588,13 @@ namespace DAnCE { DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DA_NAM_ReplyHandlerImpl::startLaunch_excep called\n"))); + std::ostringstream err; + err << this->node_id_.c_str () << " - startLaunch raised "; try { excep_holder->raise_exception (); } - catch (Deployment::StartError &) + catch (Deployment::StartError &ex) { DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DA_NAM_ReplyHandlerImpl::startLaunch_excep - ") @@ -554,6 +602,7 @@ namespace DAnCE this->da_servant_->getPlanUUID (), this->da_servant_.in (), this->node_id_.c_str ())); + err << "StartError : " << ex.name.in () << "." << ex.reason.in (); } catch (CORBA::Exception &ex) { @@ -564,6 +613,7 @@ namespace DAnCE this->da_servant_.in (), this->node_id_.c_str (), ex._info ().c_str ())); + err << "CORBA exception : " << ex._info ().c_str (); } catch (...) { @@ -573,10 +623,11 @@ namespace DAnCE this->da_servant_->getPlanUUID (), this->da_servant_.in (), this->node_id_.c_str ())); + err << "unknown exception"; } // add failure - this->counter_->increment_fail_count (); + this->counter_->increment_fail_count (err.str ().c_str ()); // mark off node this->counter_->decrement_exec_count (); @@ -611,11 +662,13 @@ namespace DAnCE { DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DA_NAM_ReplyHandlerImpl::destroyApplication_excep called\n"))); + std::ostringstream err; + err << this->node_id_.c_str () << " - destroyApplication raised "; try { excep_holder->raise_exception (); } - catch (Deployment::StopError &) + catch (Deployment::StopError &ex) { DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DA_NAM_ReplyHandlerImpl::destroyApplication_excep - ") @@ -623,6 +676,7 @@ namespace DAnCE this->da_servant_->planUUID_.c_str (), this->da_servant_.in (), this->node_id_.c_str ())); + err << "StopError : " << ex.name.in () << "." << ex.reason.in (); } catch (CORBA::Exception &ex) { @@ -633,6 +687,7 @@ namespace DAnCE this->da_servant_.in (), this->node_id_.c_str (), ex._info ().c_str ())); + err << "CORBA exception : " << ex._info ().c_str (); } catch (...) { @@ -642,10 +697,11 @@ namespace DAnCE this->da_servant_->planUUID_.c_str (), this->da_servant_.in (), this->node_id_.c_str ())); + err << "unknown exception"; } // add failure - this->counter_->increment_fail_count (); + this->counter_->increment_fail_count (err.str ().c_str ()); // mark off application this->counter_->decrement_exec_count (); @@ -687,7 +743,17 @@ namespace DAnCE this->da_servant_.in (), this->fail_count ())); - CORBA::Exception* start_ex = new Deployment::StartError(); + std::ostringstream err; + err << this->fail_count () << " errors from node applications:\n"; + for (DA_NA_ReplyHandlerImpl::Counter::errors_type::const_iterator it = this->errors ().begin (); + it != this->errors ().end (); + ++it) + { + err << "\t" << *it << "\n"; + } + CORBA::Exception* start_ex = + new Deployment::StartError(this->da_servant_->getPlanUUID (), + err.str ().c_str ()); ::Deployment::AMH_ApplicationExceptionHolder amh_exholder (start_ex); this->da_rh_->finishLaunch_excep (&amh_exholder); } @@ -723,11 +789,13 @@ namespace DAnCE { DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DA_NA_ReplyHandlerImpl::finishLaunch_excep called\n"))); + std::ostringstream err; + err << this->node_id_.c_str () << " - finishLaunch raised "; try { excep_holder->raise_exception (); } - catch (Deployment::StartError &) + catch (Deployment::StartError &ex) { DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DA_NA_ReplyHandlerImpl::finishLaunch_excep - ") @@ -735,6 +803,7 @@ namespace DAnCE this->da_servant_->planUUID_.c_str (), this->da_servant_.in (), this->node_id_.c_str ())); + err << "StartError : " << ex.name.in () << "." << ex.reason.in (); } catch (CORBA::Exception &ex) { @@ -745,6 +814,7 @@ namespace DAnCE this->da_servant_.in (), this->node_id_.c_str (), ex._info ().c_str ())); + err << "CORBA exception : " << ex._info ().c_str (); } catch (...) { @@ -754,10 +824,11 @@ namespace DAnCE this->da_servant_->planUUID_.c_str (), this->da_servant_.in (), this->node_id_.c_str ())); + err << "unknown exception"; } // add failure - this->counter_->increment_fail_count (); + this->counter_->increment_fail_count (err.str ().c_str ()); // mark off node this->counter_->decrement_exec_count (); @@ -788,11 +859,13 @@ namespace DAnCE { DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DA_NA_ReplyHandlerImpl::start_excep called\n"))); + std::ostringstream err; + err << this->node_id_.c_str () << " - start raised "; try { excep_holder->raise_exception (); } - catch (Deployment::StartError &) + catch (Deployment::StartError &ex) { DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DA_NA_ReplyHandlerImpl::start_excep - ") @@ -800,6 +873,7 @@ namespace DAnCE this->da_servant_->planUUID_.c_str (), this->da_servant_.in (), this->node_id_.c_str ())); + err << "StartError : " << ex.name.in () << "." << ex.reason.in (); } catch (CORBA::Exception &ex) { @@ -810,6 +884,7 @@ namespace DAnCE this->da_servant_.in (), this->node_id_.c_str (), ex._info ().c_str ())); + err << "CORBA exception : " << ex._info ().c_str (); } catch (...) { @@ -819,10 +894,11 @@ namespace DAnCE this->da_servant_->planUUID_.c_str (), this->da_servant_.in (), this->node_id_.c_str ())); + err << "unknown exception"; } // add failure - this->counter_->increment_fail_count (); + this->counter_->increment_fail_count (err.str ().c_str ()); // mark off node this->counter_->decrement_exec_count (); diff --git a/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp b/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp index e1c64647965..e1b71fd9609 100644 --- a/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp +++ b/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp @@ -5,6 +5,7 @@ #include "DAnCE/Logger/Log_Macros.h" #include "Split_Plan/Split_Plan.h" #include "Split_Plan/Node_Splitter.h" +#include <sstream> using namespace DAnCE; @@ -97,8 +98,9 @@ DomainApplicationManager_Impl::startLaunch ( } catch (...) { - CORBA::Exception* unknown_ex = new CORBA::UNKNOWN; - ::Deployment::AMH_ApplicationManagerExceptionHolder amh_exholder (unknown_ex); + CORBA::Exception* start_ex = new Deployment::StartError (this->getPlanUUID (), + "unknown exception"); + ::Deployment::AMH_ApplicationManagerExceptionHolder amh_exholder (start_ex); _tao_rh->startLaunch_excep (&amh_exholder); } } @@ -205,7 +207,8 @@ DomainApplicationManager_Impl::destroyApplication ( ACE_TEXT("DomainApplicationManager_impl::destroyApplication - ") ACE_TEXT("Propagating StopError for CORBA exception caught here: %C\n"), ex._info ().c_str ())); - CORBA::Exception* local_ex = new Deployment::StopError(); + CORBA::Exception* local_ex = new Deployment::StopError(this->getPlanUUID (), + ex._info ().c_str ()); ::Deployment::AMH_ApplicationManagerExceptionHolder amh_exholder (local_ex); _tao_rh->destroyApplication_excep (&amh_exholder); } @@ -214,7 +217,8 @@ DomainApplicationManager_Impl::destroyApplication ( DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DomainApplicationManager_impl::destroyApplication - ") ACE_TEXT("Propagating StopError for unknown exception caught here\n"))); - CORBA::Exception* stop_ex = new Deployment::StopError(); + CORBA::Exception* stop_ex = new Deployment::StopError(this->getPlanUUID (), + "unknown exception"); ::Deployment::AMH_ApplicationManagerExceptionHolder amh_exholder (stop_ex); _tao_rh->destroyApplication_excep (&amh_exholder); } @@ -222,7 +226,8 @@ DomainApplicationManager_Impl::destroyApplication ( DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DomainApplicationManager_impl::destroyApplication - ") ACE_TEXT("Provided application reference unknown\n"))); - CORBA::Exception* stop_ex = new Deployment::StopError(); + CORBA::Exception* stop_ex = new Deployment::StopError(this->getPlanUUID (), + "domain application reference unknown"); ::Deployment::AMH_ApplicationManagerExceptionHolder amh_exholder (stop_ex); _tao_rh->destroyApplication_excep (&amh_exholder); } @@ -395,8 +400,12 @@ DomainApplicationManager_Impl::preparePlan(DAM_CompletionHandler* completion_han ACE_TEXT("Caught a CORBA exception handling node %C : %C\n"), (*iter_plans).ext_id_.c_str(), ex._info ().c_str ())); + std::ostringstream err; + err << (*iter_plans).ext_id_.c_str() + << " - CORBA exception starting preparePlan : " + << ex._info ().c_str (); // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark off node _counter_ptr->decrement_exec_count (); // continue for next node @@ -407,8 +416,11 @@ DomainApplicationManager_Impl::preparePlan(DAM_CompletionHandler* completion_han ACE_TEXT("DomainApplicationManager_Impl::preparePlan - ") ACE_TEXT("Caught unknown exception handling node %C\n"), (*iter_plans).ext_id_.c_str())); + std::ostringstream err; + err << (*iter_plans).ext_id_.c_str() + << " - unknown exception starting preparePlan"; // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark off node _counter_ptr->decrement_exec_count (); // continue for next node @@ -490,8 +502,11 @@ DomainApplicationManager_Impl::destroyManager (DAM_CompletionHandler* completion ACE_TEXT("Caught a CORBA exception for DomainApplication[%@]: %C\n"), p, ex._info ().c_str ())); + std::ostringstream err; + err << "CORBA exception starting destroyManager : " + << ex._info ().c_str (); // mark failure - dmch->increment_fail_count (); + dmch->increment_fail_count (err.str ().c_str ()); // mark off app dmch->decrement_exec_count (); // continue @@ -503,7 +518,7 @@ DomainApplicationManager_Impl::destroyManager (DAM_CompletionHandler* completion ACE_TEXT("Caught unknown exception for DomainApplication[%@].\n"), p)); // mark failure - dmch->increment_fail_count (); + dmch->increment_fail_count ("unknown exception starting destroyManager"); // mark off app dmch->decrement_exec_count (); // continue @@ -604,8 +619,12 @@ DomainApplicationManager_Impl::finishDestroyManager (const DAM_CompletionHandler ACE_TEXT("Caught a CORBA exception attempting to call destroyManager on node %C: %C\n"), node_id.c_str (), ex._info ().c_str ())); + std::ostringstream err; + err << node_id.c_str () + << " - CORBA exception starting destroyManager : " + << ex._info ().c_str (); // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark of node _counter_ptr->decrement_exec_count (); // continue to next node @@ -616,8 +635,11 @@ DomainApplicationManager_Impl::finishDestroyManager (const DAM_CompletionHandler ACE_TEXT("DomainApplicationManager_Impl::finishDestroyManager - ") ACE_TEXT("Caught unknown exception attempting to call destroyManager on node %C\n"), node_id.c_str ())); + std::ostringstream err; + err << node_id.c_str () + << " - unknown exception starting destroyManager"; // mark failure - _counter_ptr->increment_fail_count (); + _counter_ptr->increment_fail_count (err.str ().c_str ()); // mark of node _counter_ptr->decrement_exec_count (); // continue to next node @@ -683,7 +705,17 @@ DAM_NM_ReplyHandlerImpl::Counter::on_all_completed_with_failure () this->fail_count (), this->dam_servant_->getPlanUUID ())); - this->em_ch_ptr_->handle_exception (new ::Deployment::StartError()); + std::ostringstream err; + err << this->fail_count () << " errors preparing plan:\n"; + for (DAM_NM_ReplyHandlerImpl::Counter::errors_type::const_iterator it = this->errors ().begin (); + it != this->errors ().end (); + ++it) + { + err << "\t" << *it << "\n"; + } + this->em_ch_ptr_->handle_exception ( + new ::Deployment::StartError(this->dam_servant_->getPlanUUID (), + err.str ().c_str ())); } DAM_NM_ReplyHandlerImpl::DAM_NM_ReplyHandlerImpl ( @@ -731,9 +763,13 @@ void DAM_NM_ReplyHandlerImpl::preparePlan ( ACE_TEXT("DAM_NM_ReplyHandlerImpl::preparePlan - ") ACE_TEXT("PreparePlan failed for node %C, returning a nil ") ACE_TEXT("NodeApplicationManager pointer.\n"), - this->node_id_.c_str())); + this->node_id_.c_str ())); + std::ostringstream err; + err << "preparePlan failed for node " + << this->node_id_.c_str () + << ", returned nil"; // add failure - this->counter_->increment_fail_count (); + this->counter_->increment_fail_count (err.str ().c_str ()); } else { @@ -766,16 +802,19 @@ void DAM_NM_ReplyHandlerImpl::preparePlan_excep ( ACE_TEXT("Finished preparePlan on node %C\n"), this->node_id_.c_str())); + std::ostringstream err; + err << this->node_id_.c_str () << " - preparePlan raised "; try { excep_holder->raise_exception (); } - catch (Deployment::StartError &) + catch (Deployment::StartError &ex) { DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DAM_NM_ReplyHandlerImpl::preparePlan_excep - ") ACE_TEXT("StartError exception caught for node %C.\n"), this->node_id_.c_str())); + err << "StartError : " << ex.name.in () << "." << ex.reason.in (); } catch (CORBA::Exception &ex) { @@ -784,6 +823,7 @@ void DAM_NM_ReplyHandlerImpl::preparePlan_excep ( ACE_TEXT("Caught a CORBA exception for node %C: %C\n"), this->node_id_.c_str(), ex._info ().c_str ())); + err << "CORBA exception : " << ex._info ().c_str (); } catch (...) { @@ -791,10 +831,11 @@ void DAM_NM_ReplyHandlerImpl::preparePlan_excep ( ACE_TEXT("DAM_NM_ReplyHandlerImpl::preparePlan_excep - ") ACE_TEXT("Caught unknown exception for node %C.\n"), this->node_id_.c_str())); + err << "unknown exception"; } // add failure - this->counter_->increment_fail_count (); + this->counter_->increment_fail_count (err.str ().c_str ()); // mark off node this->counter_->decrement_exec_count (); @@ -829,15 +870,18 @@ void DAM_NM_ReplyHandlerImpl::destroyManager_excep ( this->dam_servant_->getPlanUUID (), this->node_id_.c_str ())); + std::ostringstream err; + err << this->node_id_.c_str () << " - destroyApplication raised "; try { excep_holder->raise_exception (); } - catch (Deployment::StopError &) + catch (Deployment::StopError &ex) { DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DAM_NM_ReplyHandlerImpl::destroyApplication_excep - ") ACE_TEXT("StopError exception caught.\n"))); + err << "StopError : " << ex.name.in () << "." << ex.reason.in (); } catch (CORBA::Exception &ex) { @@ -845,16 +889,18 @@ void DAM_NM_ReplyHandlerImpl::destroyManager_excep ( ACE_TEXT("DAM_NM_ReplyHandlerImpl::destroyApplication_excep - ") ACE_TEXT("Caught a CORBA exception: %C\n"), ex._info ().c_str ())); + err << "CORBA exception : " << ex._info ().c_str (); } catch (...) { DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DAM_NM_ReplyHandlerImpl::destroyApplication_excep - ") ACE_TEXT("Caught unknown exception.\n"))); + err << "unknown exception"; } // add failure - this->counter_->increment_fail_count (); + this->counter_->increment_fail_count (err.str ().c_str ()); // mark off node this->counter_->decrement_exec_count (); @@ -968,10 +1014,14 @@ DomainApplicationManager_Impl::DestroyManagerCompletionHandler::handle_exception local_ex->_info ().c_str (), this->dam_servant_->getPlanUUID ())); + std::ostringstream err; + err << "CORBA exception for destroyApplication : " + << local_ex->_info ().c_str (); + delete local_ex; // clean up // add failure - this->increment_fail_count (); + this->increment_fail_count (err.str ().c_str ()); // mark of application this->decrement_exec_count (); @@ -992,7 +1042,17 @@ DomainApplicationManager_Impl::DestroyManagerCompletionHandler::on_all_completed ACE_TEXT("%u errors destroying domain applications\n"), this->fail_count_i ())); - this->dam_ch_->handle_exception (new ::Deployment::StopError()); + std::ostringstream err; + err << this->fail_count () << " errors destroying domain applications:\n"; + for (DomainApplicationManager_Impl::DestroyManagerCompletionHandler::errors_type::const_iterator it = this->errors ().begin (); + it != this->errors ().end (); + ++it) + { + err << "\t" << *it << "\n"; + } + this->dam_ch_->handle_exception ( + new ::Deployment::StopError(this->dam_servant_->getPlanUUID (), + err.str ().c_str ())); } DomainApplicationManager_Impl::DestroyApplicationCompletionHandler::DestroyApplicationCompletionHandler ( diff --git a/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.cpp b/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.cpp index b0bf941bc2b..9ebec98d70b 100644 --- a/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.cpp +++ b/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.cpp @@ -213,7 +213,9 @@ ExecutionManager_Impl::destroyManager (::Deployment::AMH_ExecutionManagerRespons } DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("ExecutionManager_Impl::destroyManager - ") ACE_TEXT("corresponding DomainApplicationManager cannot be found\n"))); - CORBA::Exception* local_ex = new ::Deployment::StopError(); + CORBA::Exception* local_ex = + new ::Deployment::StopError("ExecutionManager_Impl::destroyManager", + "corresponding DomainApplicationManager cannot be found"); ::Deployment::AMH_ExecutionManagerExceptionHolder amh_exholder (local_ex); _tao_rh->destroyManager_excep (&amh_exholder); } diff --git a/CIAO/DAnCE/tools/Completion/Completion_Counter_Base.h b/CIAO/DAnCE/tools/Completion/Completion_Counter_Base.h index 27ed08c5cf1..871755e96ee 100644 --- a/CIAO/DAnCE/tools/Completion/Completion_Counter_Base.h +++ b/CIAO/DAnCE/tools/Completion/Completion_Counter_Base.h @@ -17,6 +17,8 @@ #include /**/ "ace/config-all.h" #include "ace/Null_Mutex.h" +#include <string> +#include <vector> #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once @@ -30,18 +32,22 @@ namespace DAnCE { public: typedef ACE_LOCK lock_type; + typedef std::vector<std::string> errors_type; + Completion_Counter_Base (unsigned int exec_count, unsigned int fail_count); virtual ~Completion_Counter_Base (); void decrement_exec_count (); - void increment_fail_count (); + void increment_fail_count (const char* error); unsigned int exec_count (); unsigned int fail_count (); bool all_completed (); + const errors_type& errors () const; + protected: unsigned int exec_count_i (); unsigned int fail_count_i (); @@ -53,6 +59,7 @@ namespace DAnCE mutable ACE_LOCK lock_; unsigned int exec_count_; unsigned int fail_count_; + errors_type errors_; }; } /* DAnCE */ diff --git a/CIAO/DAnCE/tools/Completion/Completion_Counter_Base.inl b/CIAO/DAnCE/tools/Completion/Completion_Counter_Base.inl index a7a84048ca4..2ad8282780b 100644 --- a/CIAO/DAnCE/tools/Completion/Completion_Counter_Base.inl +++ b/CIAO/DAnCE/tools/Completion/Completion_Counter_Base.inl @@ -41,11 +41,12 @@ namespace DAnCE template <class ACE_LOCK> ACE_INLINE void - Completion_Counter_Base<ACE_LOCK>::increment_fail_count () + Completion_Counter_Base<ACE_LOCK>::increment_fail_count (const char* error) { ACE_GUARD (ACE_LOCK, ace_mon, this->lock_); ++this->fail_count_; + this->errors_.push_back (error); } template <class ACE_LOCK> @@ -76,6 +77,14 @@ namespace DAnCE } template <class ACE_LOCK> + ACE_INLINE + const typename Completion_Counter_Base<ACE_LOCK>::errors_type& + Completion_Counter_Base<ACE_LOCK>::errors () const + { + return this->errors_; + } + + template <class ACE_LOCK> ACE_INLINE unsigned int Completion_Counter_Base<ACE_LOCK>::exec_count_i () { |