summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormcorino <mcorino@users.noreply.github.com>2010-06-17 13:01:48 +0000
committermcorino <mcorino@users.noreply.github.com>2010-06-17 13:01:48 +0000
commite1a998ea19f8d065462951c696c5ae6e44fecd0e (patch)
treecea81b447f28550d4b8707d7f2b730fbf75a8f86
parent19f6b5a173d85409661dfa85dfc80dbca0e4f716 (diff)
downloadATCD-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/ChangeLog11
-rw-r--r--CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp140
-rw-r--r--CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp4
-rw-r--r--CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp8
-rw-r--r--CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp60
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