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, > ¶m); > } > 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