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, > > ¶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