Some comments inlined with Nagu ....
Thanks
-Nagu
> -----Original Message-----
> From: Gary Lee [mailto:[email protected]]
> Sent: 08 May 2014 12:14
> To: [email protected]; [email protected]; Nagendra
> Kumar; Praveen Malviya
> Cc: [email protected]
> Subject: [PATCH 1 of 1] amfd: Remove asserts from validation routines [#849]
>
> osaf/services/saf/amf/amfd/app.cc | 18 +++++++++++-------
> osaf/services/saf/amf/amfd/comp.cc | 5 +++--
> osaf/services/saf/amf/amfd/compcstype.cc | 5 +++--
> osaf/services/saf/amf/amfd/hlt.cc | 10 ++++++----
> osaf/services/saf/amf/amfd/sg.cc | 9 +++++----
> osaf/services/saf/amf/amfd/si.cc | 5 +++--
> osaf/services/saf/amf/amfd/su.cc | 5 +++--
> 7 files changed, 34 insertions(+), 23 deletions(-)
>
>
> When an unknown attribute in encountered in various callbacks, sometimes an
> assert is called.
> In other cases, the operation is rejected.
>
> This may create forward compatibility issues if new attributes are added in
> the
> future.
>
> In this patch, the asserts are replaced with a warning and the corresponding
> attribute change
> will be permitted but ignored.
>
> 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,15 @@ 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 {
> + LOG_WA("Ignoring unknown attribute '%s'",
> attribute->attrName);
> + rc = SA_AIS_OK;
> + }
[Nagu]:: Returning ok for bad attribute may not be appropriate.BAD_OP can be
returned.
> }
> break;
> case CCBUTIL_DELETE:
> @@ -294,10 +297,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
> - osafassert(0);
> + else {
> + TRACE("Ignoring unknown attribute '%s'",
> attribute->attrName);
> + }
[Nagu]: If above comments are accepted, then this check is not required.
> }
> break;
> }
> @@ -396,8 +399,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_WA("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
> @@ -830,8 +830,9 @@ static SaAisErrorT comp_rt_attr_cb(SaImm
> /* TODO */
> } else if (!strcmp("saAmfCompCurrProxiedNames",
> attributeName)) {
> /* TODO */
> - } else
> - osafassert(0);
> + } else {
> + LOG_WA("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_WA("Ignoring unknown attribute '%s'",
> attributeName);
> + }
[Nagu]: Same comment here.
> }
>
> return SA_AIS_OK;
> 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,9 @@ static SaAisErrorT ccb_completed_modify_
> *value, opdata-
> >objectName.value);
> return SA_AIS_ERR_BAD_OPERATION;
> }
> - } else
> - osafassert(0);
> + } else {
> + LOG_WA("Ignoring unknown attribute '%s'", attribute-
> >attrName);
> + }
[Nagu]: Same comment here.
> }
>
> return SA_AIS_OK;
> @@ -144,8 +145,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
> - osafassert(0);
> + } else {
> + TRACE("Ignoring unknown attribute '%s'", attribute-
> >attrName);
> + }
[Nagu]: Same comment here.
>
> 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,7 @@ static SaAisErrorT ccb_completed_modify_
> goto done;
> }
> } else {
> - osafassert(0);
> + LOG_WA("Ignoring unknown attribute '%s'",
> attribute->attrName);
[Nagu]: Same comment here.
> }
> } /* while (attr_mod != NULL) */
>
> @@ -933,7 +933,7 @@ static void ccb_apply_modify_hdlr(CcbUti
> } else if (!strcmp(attribute->attrName,
> "saAmfSGSuHostNodeGroup")) {
> sg->saAmfSGSuHostNodeGroup = *((SaNameT
> *)value);
> } else {
> - osafassert(0);
> + TRACE("Ignoring unknown attribute '%s'",
> attribute->attrName);
> }
>
> attr_mod = opdata->param.modify.attrMods[i++];
> @@ -1322,8 +1322,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_WA("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
> @@ -973,8 +973,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_WA("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
> @@ -1197,8 +1197,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_WA("Ignoring unknown attribute '%s'",
> attributeName);
> + }
> }
>
> return SA_AIS_OK;
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel