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

Reply via email to