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; + } } 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); + } } 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); + } } 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); + } } 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); + } 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); } } /* 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; ------------------------------------------------------------------------------ Is your legacy SCM system holding you back? Join Perforce May 7 to find out: • 3 signs your SCM is hindering your productivity • Requirements for releasing software faster • Expert tips and advice for migrating your SCM now http://p.sf.net/sfu/perforce _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel