summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormcorino <mcorino@users.noreply.github.com>2010-06-17 15:36:00 +0000
committermcorino <mcorino@users.noreply.github.com>2010-06-17 15:36:00 +0000
commitf24f1a8da7b73204d1460dde2a2b3b0b82311ad5 (patch)
tree9cfbb7c0a59431ad2a3cdb8bbadb139650d1f84b
parent12a21da13ce9281e1cc3ebb0a684539689b83442 (diff)
downloadATCD-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/ChangeLog11
-rw-r--r--CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp118
-rw-r--r--CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp100
-rw-r--r--CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.cpp4
-rw-r--r--CIAO/DAnCE/tools/Completion/Completion_Counter_Base.h9
-rw-r--r--CIAO/DAnCE/tools/Completion/Completion_Counter_Base.inl11
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 ()
{