diff options
author | mcorino <mcorino@users.noreply.github.com> | 2010-06-17 13:01:48 +0000 |
---|---|---|
committer | mcorino <mcorino@users.noreply.github.com> | 2010-06-17 13:01:48 +0000 |
commit | e1a998ea19f8d065462951c696c5ae6e44fecd0e (patch) | |
tree | cea81b447f28550d4b8707d7f2b730fbf75a8f86 | |
parent | 19f6b5a173d85409661dfa85dfc80dbca0e4f716 (diff) | |
download | ATCD-e1a998ea19f8d065462951c696c5ae6e44fecd0e.tar.gz |
Thu Jun 17 12:57:10 UTC 2010 Martin Corino <mcorino@remedy.nl>
* DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
Clean up.
* DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
* DAnCE/DomainApplication/Domain_Application_Impl.cpp:
* DAnCE/Plan_Launcher/Plan_Launcher.cpp:
Fixed plan teardown; added missing destroy of managers in process.
Added -f|--force argument to plan launcher.
-rw-r--r-- | CIAO/ChangeLog | 11 | ||||
-rw-r--r-- | CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp | 140 | ||||
-rw-r--r-- | CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp | 4 | ||||
-rw-r--r-- | CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp | 8 | ||||
-rw-r--r-- | CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp | 60 |
5 files changed, 141 insertions, 82 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index 09f8cf3c043..da2c5f514e7 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,3 +1,14 @@ +Thu Jun 17 12:57:10 UTC 2010 Martin Corino <mcorino@remedy.nl> + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Clean up. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + Fixed plan teardown; added missing destroy of managers in process. + Added -f|--force argument to plan launcher. + Thu Jun 17 12:56:13 UTC 2010 Johnny Willemsen <jwillemsen@remedy.nl> * connectors/dds4ccm/idl/dds4ccm_Base.idl: diff --git a/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp b/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp index 5f7a39dda14..ee43ed5114a 100644 --- a/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp +++ b/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp @@ -339,80 +339,88 @@ namespace DAnCE this, this->node_applications_.current_size ())); - // create completion counter - DA_NAM_ReplyHandlerImpl::Counter* _cp = 0; - ACE_NEW_THROW_EX (_cp, - DA_NAM_ReplyHandlerImpl::Counter (this->node_applications_.current_size (), - this, - _ch_ptr), - CORBA::NO_MEMORY ()); - DA_NAM_ReplyHandlerImpl::Counter_AutoPtr _counter_ptr (_cp); - - for (TApp2Mgr::iterator iter = this->node_applications_.begin(); - iter != this->node_applications_.end(); - ++iter) + if (this->node_applications_.current_size () > 0) { - ACE_CString node_id; - this->app_node_ids_.find ((*iter).ext_id_, node_id); + // create completion counter + DA_NAM_ReplyHandlerImpl::Counter* _cp = 0; + ACE_NEW_THROW_EX (_cp, + DA_NAM_ReplyHandlerImpl::Counter (this->node_applications_.current_size (), + this, + _ch_ptr), + CORBA::NO_MEMORY ()); + DA_NAM_ReplyHandlerImpl::Counter_AutoPtr _counter_ptr (_cp); + + for (TApp2Mgr::iterator iter = this->node_applications_.begin(); + iter != this->node_applications_.end(); + ++iter) + { + ACE_CString node_id; + this->app_node_ids_.find ((*iter).ext_id_, node_id); - try - { - // create and activate reply handler - DA_NAM_ReplyHandlerImpl* da_nam_rh_servant = 0; - ACE_NEW_THROW_EX (da_nam_rh_servant, - DAnCE::DA_NAM_ReplyHandlerImpl (this, - (*iter).int_id_, - node_id.c_str (), - _counter_ptr), - CORBA::NO_MEMORY ()); + try + { + // create and activate reply handler + DA_NAM_ReplyHandlerImpl* da_nam_rh_servant = 0; + ACE_NEW_THROW_EX (da_nam_rh_servant, + DAnCE::DA_NAM_ReplyHandlerImpl (this, + (*iter).int_id_, + node_id.c_str (), + _counter_ptr), + CORBA::NO_MEMORY ()); - PortableServer::ObjectId_var id = this->poa_->activate_object (da_nam_rh_servant); + PortableServer::ObjectId_var id = this->poa_->activate_object (da_nam_rh_servant); - CORBA::Object_var ref = this->poa_->id_to_reference (id.in()); + CORBA::Object_var ref = this->poa_->id_to_reference (id.in()); - ::Deployment::AMI_NodeApplicationManagerHandler_var da_nam_handler = - ::Deployment::AMI_NodeApplicationManagerHandler::_narrow (ref.in ()); + ::Deployment::AMI_NodeApplicationManagerHandler_var da_nam_handler = + ::Deployment::AMI_NodeApplicationManagerHandler::_narrow (ref.in ()); - DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::destroyApplication - ") - ACE_TEXT("Plan %C DomainApplication[%@] : ") - ACE_TEXT("calling destroyApplication on node application manager for node %C\n"), - this->planUUID_.c_str (), - this, - node_id.c_str ())); + DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::destroyApplication - ") + ACE_TEXT("Plan %C DomainApplication[%@] : ") + ACE_TEXT("calling destroyApplication on node application manager for node %C\n"), + this->planUUID_.c_str (), + this, + node_id.c_str ())); - (*iter).int_id_->sendc_destroyApplication (da_nam_handler.in (), - (*iter).ext_id_.in()); + (*iter).int_id_->sendc_destroyApplication (da_nam_handler.in (), + (*iter).ext_id_.in()); - DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::destroyApplication - ") - ACE_TEXT("destroyApplication has been called on node application manager\n"))); - } - catch (CORBA::Exception& ex) - { - DANCE_ERROR (1, (LM_ERROR, DLINFO - ACE_TEXT("DomainApplication_Impl::destroyApplication - ") - ACE_TEXT("DomainApplication[%@] caught a CORBA exception handling node %C : %C\n"), - this, - node_id.c_str (), - ex._info ().c_str ())); - // mark failure - _counter_ptr->increment_fail_count (); - // mark off node - _counter_ptr->decrement_exec_count (); - // continue for next node - } - catch (...) - { - DANCE_ERROR (1, (LM_ERROR, DLINFO - ACE_TEXT("DomainApplication_Impl::destroyApplication - ") - ACE_TEXT("DomainApplication[%@] caught a unknown exception handling node %C\n"), - this, - node_id.c_str ())); - // mark failure - _counter_ptr->increment_fail_count (); - // mark off node - _counter_ptr->decrement_exec_count (); - // continue for next node - } + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::destroyApplication - ") + ACE_TEXT("destroyApplication has been called on node application manager\n"))); + } + catch (CORBA::Exception& ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplication_Impl::destroyApplication - ") + ACE_TEXT("DomainApplication[%@] caught a CORBA exception handling node %C : %C\n"), + this, + node_id.c_str (), + ex._info ().c_str ())); + // mark failure + _counter_ptr->increment_fail_count (); + // mark off node + _counter_ptr->decrement_exec_count (); + // continue for next node + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplication_Impl::destroyApplication - ") + ACE_TEXT("DomainApplication[%@] caught a unknown exception handling node %C\n"), + this, + node_id.c_str ())); + // mark failure + _counter_ptr->increment_fail_count (); + // mark off node + _counter_ptr->decrement_exec_count (); + // continue for next node + } + } + } + else + { + // no node applications to clean up so finish immediately + _ch_ptr->handle_completion (this); } DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::destroyApplication - finished\n"))); diff --git a/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp b/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp index 0452f261879..e1c64647965 100644 --- a/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp +++ b/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp @@ -513,8 +513,8 @@ DomainApplicationManager_Impl::destroyManager (DAM_CompletionHandler* completion } else { - // nothing to destroy, complete - _ch_ptr->handle_completion (this); + // no applications to destroy so finish immediately + this->finishDestroyManager (_ch_ptr); } } catch (Deployment::StopError &e) diff --git a/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp b/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp index 441a284dd3b..fe57bbbec97 100644 --- a/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp +++ b/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp @@ -249,16 +249,16 @@ NodeApplicationManager_Impl::preparePlan (const Deployment::DeploymentPlan& plan } #endif // Need to add naming service reference to config properties. - DAnCE::Utility::update_property_value<CosNaming::NamingContext_var> ( + DAnCE::Utility::update_property_value<CosNaming::NamingContext_ptr> ( DAnCE::LOCALITY_NAMINGCONTEXT, lm_idd.configProperty, - this->instance_nc_); + this->instance_nc_. in ()); // pass installer reference as an execParameter property - DAnCE::Utility::update_property_value<DAnCE::ArtifactInstallation_var> ( + DAnCE::Utility::update_property_value<DAnCE::ArtifactInstallation_ptr> ( DAnCE::DANCE_LM_INSTALLER, lm_mdd.execParameter, - this->installer_); + this->installer_.in ()); } // cleanup installer resources diff --git a/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp b/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp index be88d5ff474..e138d3bb24d 100644 --- a/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp +++ b/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp @@ -38,7 +38,8 @@ namespace app_ior_ (0), output_ (false), output_prefix_ (0), - mode_ (LAUNCH) + mode_ (LAUNCH), + force_ (false) {} const ACE_TCHAR *em_ior_; @@ -51,6 +52,7 @@ namespace bool output_; const ACE_TCHAR *output_prefix_; MODE mode_; + bool force_; }; } @@ -91,7 +93,9 @@ usage(const ACE_TCHAR*) ACE_TEXT ("Launch the plan (Requires CDR/XML plan)\n") ACE_TEXT ("\t-s|--stop-plan\t\t\tStop the plan ") - ACE_TEXT ("(Requires Plan, UUID, or APP/AM references") + ACE_TEXT ("(Requires Plan, UUID, or APP/AM references\n") + + ACE_TEXT ("\t-f|--force\t\t\tDo not stop teardown on errors") ACE_TEXT ("\nOther Options\n") ACE_TEXT ("\t-o|--output[prefix]\t\tOutput IOR files ") @@ -115,7 +119,7 @@ parse_args(int argc, ACE_TCHAR *argv[], Options &options) } ACE_Get_Opt get_opt(argc, argv, - ACE_TEXT ("k:n:c:x:u:m:a:lso::h")); + ACE_TEXT ("k:n:c:x:u:m:a:lsfo::h")); get_opt.long_option(ACE_TEXT("em-ior"), 'k', ACE_Get_Opt::ARG_REQUIRED); get_opt.long_option(ACE_TEXT("nm-ior"), 'n', ACE_Get_Opt::ARG_REQUIRED); get_opt.long_option(ACE_TEXT("xml-plan"), 'x', ACE_Get_Opt::ARG_REQUIRED); @@ -125,6 +129,7 @@ parse_args(int argc, ACE_TCHAR *argv[], Options &options) get_opt.long_option(ACE_TEXT("app-ior"), 'a', ACE_Get_Opt::ARG_REQUIRED); get_opt.long_option(ACE_TEXT("launch-plan"), 'l', ACE_Get_Opt::NO_ARG); get_opt.long_option(ACE_TEXT("stop-plan"), 's', ACE_Get_Opt::NO_ARG); + get_opt.long_option(ACE_TEXT("force"), 'f', ACE_Get_Opt::NO_ARG); get_opt.long_option(ACE_TEXT("output"), 'o', ACE_Get_Opt::ARG_OPTIONAL); get_opt.long_option(ACE_TEXT("help"), 'h', ACE_Get_Opt::NO_ARG); @@ -216,6 +221,13 @@ parse_args(int argc, ACE_TCHAR *argv[], Options &options) ACE_TEXT ("Tearing down nominated plan\n"))); break; + case 'f': + options.force_ = true; + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT ("Plan_Launcher::parse_args - ") + ACE_TEXT ("Not stopping teardown on errors\n"))); + break; + case 'o': options.output_ = true; DANCE_DEBUG (6, (LM_DEBUG, DLINFO @@ -389,18 +401,19 @@ int teardown_plan (const Options &opts, { DANCE_TRACE ("Plan_Launcher::teardown_plan"); + int rc = 0; try { + CORBA::Object_var am; + CORBA::Object_var app; if (opts.am_ior_ && opts.app_ior_) { DANCE_DEBUG (3, (LM_DEBUG, DLINFO ACE_TEXT ("Plan_Launcher::teardown_plan - ") ACE_TEXT ("Tearing down plan with explicitly ") ACE_TEXT ("nominated App and AM IORs.\n"))); - CORBA::Object_var am (orb->string_to_object (opts.am_ior_)); - CORBA::Object_var app (orb->string_to_object (opts.app_ior_)); - - pl_base->teardown_application (am, app); + am = orb->string_to_object (opts.am_ior_); + app = orb->string_to_object (opts.app_ior_); } else { @@ -424,7 +437,6 @@ int teardown_plan (const Options &opts, return 1; } - CORBA::Object_var am, app; if (em_launcher->lookup_by_uuid (uuid.c_str (), am.out (), app.out ())) @@ -433,7 +445,6 @@ int teardown_plan (const Options &opts, ACE_TEXT ("Plan_Launcher::teardown_plan - ") ACE_TEXT ("Tearing down plan with UUID %C\n"), uuid.c_str ())); - pl_base->teardown_application (am, app); } else { @@ -443,6 +454,35 @@ int teardown_plan (const Options &opts, return 1; } } + + try + { + pl_base->teardown_application (am, app); + } + catch (const DAnCE::Deployment_Failure &ex) + { + ACE_ERROR ((LM_ERROR, DLINFO ACE_TEXT ("Plan_Launcher::teardown_plan - ") + ACE_TEXT ("Application Teardown failed, exception: %C\n"), + ex.ex_.c_str ())); + rc = 1; + } + catch (const CORBA::Exception &ex) + { + ACE_ERROR ((LM_ERROR, DLINFO ACE_TEXT ("Plan_Launcher::teardown_plan - ") + ACE_TEXT ("Application Teardown failed, caught CORBA exception %C\n"), + ex._info ().c_str ())); + rc = 1; + } + catch (...) + { + ACE_ERROR ((LM_ERROR, DLINFO ACE_TEXT ("Plan_Launcher::teardown_plan - ") + ACE_TEXT ("Application Teardown failed, ") + ACE_TEXT ("caught unknown C++ exception\n"))); + rc = 1; + } + + if (rc == 0 || opts.force_) + pl_base->destroy_app_manager (am); } catch (const DAnCE::Deployment_Failure &ex) { @@ -466,7 +506,7 @@ int teardown_plan (const Options &opts, return 1; } - return 0; + return rc; } struct ORB_Destroyer |