Amfd is crashing in the following scenarios #1 and #2:

1.
immcfg -c SaAmfNode safAmfNode=PL-6,safAmfCluster=myAmfCluster -a 
saAmfNodeSuFailoverMax=2 -a saAmfNodeSuFailOverProb=1200000000000 -a 
saAmfNodeFailfastOnTerminationFailure=1 -a 
saAmfNodeFailfastOnInstantiationFailure=0 -a 
saAmfNodeClmNode=safNode=PL-6,safCluster=myClmCluster -a saAmfNodeAutoRepair=1 
-a saAmfNodeAdminState=3
immcfg -c SaAmfNode safAmfNode=PL-7,safAmfCluster=myAmfCluster -a 
saAmfNodeSuFailoverMax=2 -a saAmfNodeSuFailOverProb=1200000000000 -a 
saAmfNodeFailfastOnTerminationFailure=1 -a 
saAmfNodeFailfastOnInstantiationFailure=0 -a 
saAmfNodeClmNode=safNode=PL-6,safCluster=myClmCluster -a saAmfNodeAutoRepair=1 
-a saAmfNodeAdminState=3
immcfg -c SaAmfNodeGroup safAmfNodeGroup=Nagu,safAmfCluster=myAmfCluster -a 
saAmfNGNodeList=safAmfNode=PL-6,safAmfCluster=myAmfCluster
immcfg -m -a saAmfNGNodeList+=safAmfNode=PL-7,safAmfCluster=myAmfCluster   
safAmfNodeGroup=Nagu,safAmfCluster=myAmfCluster

immcfg
immcfg -d safAmfNode=PL-6,safAmfCluster=myAmfCluster
immcfg -d safAmfNodeGroup=Nagu,safAmfCluster=myAmfCluster
immcfg --ccb-apply

2.
immcfg -c SaAmfNode safAmfNode=PL-6,safAmfCluster=myAmfCluster -a 
saAmfNodeSuFailoverMax=2 -a saAmfNodeSuFailOverProb=1200000000000 -a 
saAmfNodeFailfastOnTerminationFailure=1 -a 
saAmfNodeFailfastOnInstantiationFailure=0 -a 
saAmfNodeClmNode=safNode=PL-6,safCluster=myClmCluster -a saAmfNodeAutoRepair=1 
-a saAmfNodeAdminState=3
immcfg -c SaAmfNode safAmfNode=PL-7,safAmfCluster=myAmfCluster -a 
saAmfNodeSuFailoverMax=2 -a saAmfNodeSuFailOverProb=1200000000000 -a 
saAmfNodeFailfastOnTerminationFailure=1 -a 
saAmfNodeFailfastOnInstantiationFailure=0 -a 
saAmfNodeClmNode=safNode=PL-6,safCluster=myClmCluster -a saAmfNodeAutoRepair=1 
-a saAmfNodeAdminState=3
immcfg -c SaAmfNodeGroup safAmfNodeGroup=Nagu,safAmfCluster=myAmfCluster -a 
saAmfNGNodeList=safAmfNode=PL-6,safAmfCluster=myAmfCluster
immcfg -m -a saAmfNGNodeList+=safAmfNode=PL-7,safAmfCluster=myAmfCluster   
safAmfNodeGroup=Nagu,safAmfCluster=myAmfCluster

immcfg
immcfg -d safAmfNode=PL-6,safAmfCluster=myAmfCluster
immcfg -m -a saAmfNGNodeList-=safAmfNode=PL-6,safAmfCluster=myAmfCluster 
safAmfNodeGroup=Nagu,safAmfCluster=myAmfCluster
immcfg --ccb-apply

Thanks
-Nagu

> -----Original Message-----
> From: Gary Lee [mailto:[email protected]]
> Sent: 25 August 2015 11:54
> To: Nagendra Kumar; [email protected]; Praveen Malviya;
> [email protected]
> Cc: [email protected]
> Subject: [PATCH 4 of 4] amfd: allow node to be removed [#1458]
> 
>  osaf/services/saf/amf/amfd/node.cc |  44
> +++++++++++++++++++++++++++++++++----
>  1 files changed, 39 insertions(+), 5 deletions(-)
> 
> 
> allow node to be removed if it is also removed from all nodegroups
> 
> diff --git a/osaf/services/saf/amf/amfd/node.cc
> b/osaf/services/saf/amf/amfd/node.cc
> --- a/osaf/services/saf/amf/amfd/node.cc
> +++ b/osaf/services/saf/amf/amfd/node.cc
> @@ -415,6 +415,7 @@
>       AVD_SU *su;
>       bool su_exist = false;
>       CcbUtilOperationData_t *t_opData;
> +     std::string node_name(Amf::to_string(&node->name));
> 
>       TRACE_ENTER2("'%s'", opdata->objectName.value);
> 
> @@ -460,12 +461,45 @@
>       for (std::map<std::string, AVD_AMF_NG*>::const_iterator it =
> nodegroup_db->begin();
>                       it != nodegroup_db->end(); it++) {
>               AVD_AMF_NG *ng = it->second;
> +
>               if (node_in_nodegroup(Amf::to_string(&(opdata-
> >objectName)), ng) == true) {
> -                     report_ccb_validation_error(opdata, "'%s' exists in"
> -                                     " the nodegroup '%s'",
> -                                     opdata->objectName.value, ng-
> >name.value);
> -                     rc = SA_AIS_ERR_BAD_OPERATION;
> -                     goto done;
> +                     // if the node is being removed from nodegroup too,
> then it's OK
> +                     TRACE("check if node is being deleted from
> nodegroup '%s'", ng->name.value);
> +                     t_opData = ccbutil_getCcbOpDataByDN(opdata-
> >ccbId, &ng->name);
> +
> +                     if (t_opData == NULL) {
> +                             TRACE("t_opData is NULL");
> +                             report_ccb_validation_error(opdata, "'%s'
> exists in"
> +                                             " the nodegroup '%s'",
> +                                             opdata->objectName.value,
> ng->name.value);
> +                             rc = SA_AIS_ERR_BAD_OPERATION;
> +                             goto done;
> +                     }
> +
> +                     const SaImmAttrModificationT_2 *mod = NULL;
> +                     int i = 0;
> +                     bool node_being_removed = false;
> +                     while ((mod = t_opData-
> >param.modify.attrMods[i++]) != NULL &&
> +                             node_being_removed == false) {
> +                             if (mod->modType ==
> SA_IMM_ATTR_VALUES_DELETE) {
> +                                     for (unsigned j = 0; j < mod-
> >modAttr.attrValuesNumber; j++) {
> +                                             if
> (node_name.compare(Amf::to_string((SaNameT *)mod-
> >modAttr.attrValues[j])) == 0) {
> +                                                     // node is being
> removed from nodegroup
> +                                                     TRACE("node %s is
> being removed from %s", node_name.c_str(), ng->name.value);
> +                                                     node_being_removed
> = true;
> +                                                     break;
> +                                             }
> +                                     }
> +                             }
> +                     }
> +
> +                     if (node_being_removed == false) {
> +                             report_ccb_validation_error(opdata, "'%s'
> exists in"
> +                                             " the nodegroup '%s'",
> +                                             opdata->objectName.value,
> ng->name.value);
> +                             rc = SA_AIS_ERR_BAD_OPERATION;
> +                             goto done;
> +                     }
>               }
>       }
>       opdata->userData = node;

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to