Ack from me too. Since this is a defect Gary can you please provide one patch 
per branch and some maintainer can push?
Thanks,
Hans

> -----Original Message-----
> From: Nagendra Kumar [mailto:nagendr...@oracle.com]
> Sent: den 28 maj 2014 13:08
> To: Gary Lee; Hans Feldt; Hans Nordebäck; Praveen Malviya
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: RE: [PATCH 1 of 1] amfd: Remove asserts from validation routines 
> [#849]
> 
> Ack.
> 
> Thanks
> -Nagu
> 
> > -----Original Message-----
> > From: Gary Lee [mailto:gary....@dektech.com.au]
> > Sent: 28 May 2014 12:50
> > To: hans.fe...@ericsson.com; hans.nordeb...@ericsson.com; Nagendra
> > Kumar; Praveen Malviya
> > Cc: opensaf-devel@lists.sourceforge.net
> > Subject: [PATCH 1 of 1] amfd: Remove asserts from validation routines [#849]
> >
> >  osaf/services/saf/amf/amfd/app.cc        |  19 +++++++++++++------
> >  osaf/services/saf/amf/amfd/comp.cc       |   5 +++--
> >  osaf/services/saf/amf/amfd/compcstype.cc |   5 +++--
> >  osaf/services/saf/amf/amfd/csi.cc        |   3 ++-
> >  osaf/services/saf/amf/amfd/csiattr.cc    |   2 +-
> >  osaf/services/saf/amf/amfd/hlt.cc        |  11 ++++++++---
> >  osaf/services/saf/amf/amfd/sg.cc         |  11 ++++++++---
> >  osaf/services/saf/amf/amfd/si.cc         |   5 +++--
> >  osaf/services/saf/amf/amfd/su.cc         |   8 +++++---
> >  osaf/services/saf/amf/amfd/sutype.cc     |   3 ++-
> >  10 files changed, 48 insertions(+), 24 deletions(-)
> >
> >
> > When an unknown attribute in encountered in various ccb completed callbacks,
> > sometimes an assert is called.  In other cases, the operation is rejected, 
> > or
> > ignored.
> >
> > This patches replaces the asserts, and instead returns
> > SA_AIS_ERR_BAD_OPERATION
> > to the IMMA.
> >
> > In addition, some asserts in runtime attribute callbacks have been replaced
> > with error messages.
> >
> > diff --git a/osaf/services/saf/amf/amfd/app.cc
> > b/osaf/services/saf/amf/amfd/app.cc
> > --- a/osaf/services/saf/amf/amfd/app.cc
> > +++ b/osaf/services/saf/amf/amfd/app.cc
> > @@ -243,12 +243,18 @@ static SaAisErrorT app_ccb_completed_cb(
> >                             SaNameT dn = *((SaNameT*)attribute-
> > >attrValues[0]);
> >                             if (NULL == avd_apptype_get(&dn)) {
> >                                     report_ccb_validation_error(opdata,
> > "saAmfAppType '%s' not found", dn.value);
> > +                                   rc = SA_AIS_ERR_BAD_OPERATION;
> >                                     goto done;
> >                             }
> >                             rc = SA_AIS_OK;
> >                             break;
> > -                   } else
> > -                           osafassert(0);
> > +                   } else {
> > +                           report_ccb_validation_error(opdata,
> > +                                   "Unknown attribute '%s'",
> > +                                   attribute->attrName);
> > +                           rc = SA_AIS_ERR_BAD_OPERATION;
> > +                           goto done;
> > +                   }
> >             }
> >             break;
> >     case CCBUTIL_DELETE:
> > @@ -294,10 +300,10 @@ static void app_ccb_apply_cb(CcbUtilOper
> >                             app->saAmfAppType =
> > *((SaNameT*)attribute->attrValues[0]);
> >                             app->app_type = avd_apptype_get(&app-
> > >saAmfAppType);
> >                             avd_apptype_add_app(app);
> > -                           break;
> >                     }
> > -                   else
> > +                   else {
> >                             osafassert(0);
> > +                   }
> >             }
> >             break;
> >     }
> > @@ -396,8 +402,9 @@ static SaAisErrorT app_rt_attr_cb(SaImmO
> >             if (!strcmp(attributeName, "saAmfApplicationCurrNumSGs")) {
> >                     avd_saImmOiRtObjectUpdate_sync(objectName,
> > attributeName,
> >                             SA_IMM_ATTR_SAUINT32T, &app-
> > >saAmfApplicationCurrNumSGs);
> > -           } else
> > -                   osafassert(0);
> > +           } else {
> > +                   LOG_ER("Ignoring unknown attribute '%s'",
> > attributeName);
> > +           }
> >     }
> >
> >     return SA_AIS_OK;
> > diff --git a/osaf/services/saf/amf/amfd/comp.cc
> > b/osaf/services/saf/amf/amfd/comp.cc
> > --- a/osaf/services/saf/amf/amfd/comp.cc
> > +++ b/osaf/services/saf/amf/amfd/comp.cc
> > @@ -820,8 +820,9 @@ static SaAisErrorT comp_rt_attr_cb(SaImm
> >                     /* TODO */
> >             } else if (!strcmp("saAmfCompCurrProxiedNames",
> > attributeName)) {
> >                     /* TODO */
> > -           } else
> > -                   osafassert(0);
> > +           } else {
> > +                   LOG_ER("Ignoring unknown attribute '%s'",
> > attributeName);
> > +           }
> >     }
> >
> >     return SA_AIS_OK;
> > diff --git a/osaf/services/saf/amf/amfd/compcstype.cc
> > b/osaf/services/saf/amf/amfd/compcstype.cc
> > --- a/osaf/services/saf/amf/amfd/compcstype.cc
> > +++ b/osaf/services/saf/amf/amfd/compcstype.cc
> > @@ -435,8 +435,9 @@ static SaAisErrorT compcstype_rt_attr_ca
> >                             SA_IMM_ATTR_SAUINT32T, &cst-
> > >saAmfCompNumCurrStandbyCSIs);
> >             } else if (!strcmp("saAmfCompAssignedCsi", attributeName)) {
> >                     /* TODO */
> > -           } else
> > -                   osafassert(0);
> > +           } else {
> > +                   LOG_ER("Ignoring unknown attribute '%s'",
> > attributeName);
> > +           }
> >     }
> >
> >     return SA_AIS_OK;
> > diff --git a/osaf/services/saf/amf/amfd/csi.cc
> > b/osaf/services/saf/amf/amfd/csi.cc
> > --- a/osaf/services/saf/amf/amfd/csi.cc
> > +++ b/osaf/services/saf/amf/amfd/csi.cc
> > @@ -784,8 +784,9 @@ static void csi_ccb_apply_modify_hdlr(st
> >                     csi->cstype = csi_type;
> >                     avd_cstype_add_csi(csi);
> >             }
> > -           else
> > +           else {
> >                     osafassert(0);
> > +           }
> >     }
> >
> >          TRACE_LEAVE();
> > diff --git a/osaf/services/saf/amf/amfd/csiattr.cc
> > b/osaf/services/saf/amf/amfd/csiattr.cc
> > --- a/osaf/services/saf/amf/amfd/csiattr.cc
> > +++ b/osaf/services/saf/amf/amfd/csiattr.cc
> > @@ -411,7 +411,7 @@ static SaAisErrorT csiattr_ccb_completed
> >                             if (NULL == csi_name_value_pair_find(csi,
> > &csi_attr_name, value)) {
> >                                     report_ccb_validation_error(opdata,
> > "csi attr name '%s' and value '%s' doesn't exist",
> >                                                     csi_attr_name.value,
> > value);
> > -                                   rc = SA_AIS_ERR_EXIST;
> > +                                   rc = SA_AIS_ERR_NOT_EXIST;
> >                                     goto done;
> >                             }
> >                          } /* for  */
> > diff --git a/osaf/services/saf/amf/amfd/hlt.cc
> > b/osaf/services/saf/amf/amfd/hlt.cc
> > --- a/osaf/services/saf/amf/amfd/hlt.cc
> > +++ b/osaf/services/saf/amf/amfd/hlt.cc
> > @@ -48,8 +48,12 @@ static SaAisErrorT ccb_completed_modify_
> >                                             *value, opdata-
> > >objectName.value);
> >                             return SA_AIS_ERR_BAD_OPERATION;
> >                     }
> > -           } else
> > -                   osafassert(0);
> > +           } else {
> > +                   report_ccb_validation_error(opdata,
> > +                           "Unknown attribute '%s'",
> > +                           attribute->attrName);
> > +                   return SA_AIS_ERR_BAD_OPERATION;
> > +           }
> >     }
> >
> >     return SA_AIS_OK;
> > @@ -144,8 +148,9 @@ static void ccb_apply_modify_hdlr(CcbUti
> >                     TRACE("saAmfHealthcheckMaxDuration modified to
> > '%llu' for Comp'%s'", *param_val,
> >                                     comp->comp_info.name.value);
> >                     param.attr_id = saAmfHealthcheckMaxDuration_ID;
> > -           } else
> > +           } else {
> >                     osafassert(0);
> > +           }
> >
> >             avd_snd_op_req_msg(avd_cb, comp->su->su_on_node,
> > &param);
> >     }
> > diff --git a/osaf/services/saf/amf/amfd/sg.cc
> > b/osaf/services/saf/amf/amfd/sg.cc
> > --- a/osaf/services/saf/amf/amfd/sg.cc
> > +++ b/osaf/services/saf/amf/amfd/sg.cc
> > @@ -627,7 +627,11 @@ static SaAisErrorT ccb_completed_modify_
> >                                     goto done;
> >                             }
> >                     } else {
> > -                           osafassert(0);
> > +                           report_ccb_validation_error(opdata,
> > +                                   "Unknown attribute '%s'",
> > +                                   attribute->attrName);
> > +                           rc = SA_AIS_ERR_BAD_OPERATION;
> > +                           goto done;
> >                     }
> >             }               /* while (attr_mod != NULL) */
> >
> > @@ -1376,8 +1380,9 @@ static SaAisErrorT sg_rt_attr_cb(SaImmOi
> >             } else if (!strcmp("saAmfSGNumCurrInstantiatedSpareSUs",
> > attributeName)) {
> >                     avd_saImmOiRtObjectUpdate_sync(objectName,
> > attributeName,
> >                             SA_IMM_ATTR_SAUINT32T, &sg-
> > >saAmfSGNumCurrInstantiatedSpareSUs);
> > -           } else
> > -                   osafassert(0);
> > +           } else {
> > +                   LOG_ER("Ignoring unknown attribute '%s'",
> > attributeName);
> > +           }
> >     }
> >
> >     return SA_AIS_OK;
> > diff --git a/osaf/services/saf/amf/amfd/si.cc 
> > b/osaf/services/saf/amf/amfd/si.cc
> > --- a/osaf/services/saf/amf/amfd/si.cc
> > +++ b/osaf/services/saf/amf/amfd/si.cc
> > @@ -963,8 +963,9 @@ static SaAisErrorT si_rt_attr_cb(SaImmOi
> >             } else if (!strcmp("saAmfSINumCurrStandbyAssignments",
> > attributeName)) {
> >                     avd_saImmOiRtObjectUpdate_sync(objectName,
> > attributeName,
> >                             SA_IMM_ATTR_SAUINT32T, &si-
> > >saAmfSINumCurrStandbyAssignments);
> > -           } else
> > -                   osafassert(0);
> > +           } else {
> > +                   LOG_ER("Ignoring unknown attribute '%s'",
> > attributeName);
> > +           }
> >     }
> >
> >     return SA_AIS_OK;
> > diff --git a/osaf/services/saf/amf/amfd/su.cc
> > b/osaf/services/saf/amf/amfd/su.cc
> > --- a/osaf/services/saf/amf/amfd/su.cc
> > +++ b/osaf/services/saf/amf/amfd/su.cc
> > @@ -1220,8 +1220,9 @@ static SaAisErrorT su_rt_attr_cb(SaImmOi
> >             } else if (!strcmp("saAmfSURestartCount", attributeName)) {
> >                     avd_saImmOiRtObjectUpdate_sync(objectName,
> > attributeName,
> >                             SA_IMM_ATTR_SAUINT32T, &su-
> > >saAmfSURestartCount);
> > -           } else
> > -                   osafassert(0);
> > +           } else {
> > +                   LOG_ER("Ignoring unknown attribute '%s'",
> > attributeName);
> > +           }
> >     }
> >
> >     return SA_AIS_OK;
> > @@ -1490,8 +1491,9 @@ static void su_ccb_apply_modify_hdlr(str
> >                             su->saAmfSUFailover_configured = true;
> >                     }
> >                     su->su_is_external = sut->saAmfSutIsExternal;
> > -           } else
> > +           } else {
> >                     osafassert(0);
> > +           }
> >     }
> >
> >     TRACE_LEAVE();
> > diff --git a/osaf/services/saf/amf/amfd/sutype.cc
> > b/osaf/services/saf/amf/amfd/sutype.cc
> > --- a/osaf/services/saf/amf/amfd/sutype.cc
> > +++ b/osaf/services/saf/amf/amfd/sutype.cc
> > @@ -260,8 +260,9 @@ static void sutype_ccb_apply_modify_hdlr
> >                                     }
> >                             }
> >                     }
> > -           } else
> > +           } else {
> >                     osafassert(0);
> > +           }
> >     }
> >
> >     TRACE_LEAVE();

------------------------------------------------------------------------------
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to