osaf/services/saf/amf/amfd/si.cc | 13 +++++-------- 1 files changed, 5 insertions(+), 8 deletions(-)
Amfd rejects ccb modification operation on si rank if its current si rank value is being modified by the same value. Amfd can accept it and ignore the changes to avoid ccb abort. 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 @@ -778,12 +778,6 @@ static SaAisErrorT si_ccb_completed_modi SaUint32T sirank = *(SaUint32T*)attribute->attrValues[0]; - if (si->saAmfSIRank == (sirank == 0 ? ~0U : sirank)) { - report_ccb_validation_error(opdata, "Changing same value of saAmfSIRank(%u)", sirank); - rc = SA_AIS_ERR_EXIST; - break; - } - if (!si->is_sirank_valid(sirank)) { report_ccb_validation_error(opdata, "saAmfSIRank(%u) is invalid due to SI Dependency rules", sirank); rc = SA_AIS_ERR_BAD_OPERATION; @@ -1205,8 +1199,11 @@ static void si_ccb_apply_modify_hdlr(Ccb } else if (!strcmp(attribute->attrName, "saAmfSIRank")) { if (value_is_deleted == true) si->update_sirank(0); - else - si->update_sirank(*((SaUint32T *)attr_mod->modAttr.attrValues[0])); + else { + /* Ignore the modification with the same value. */ + if (si->saAmfSIRank != *((SaUint32T *)attr_mod->modAttr.attrValues[0])) + si->update_sirank(*((SaUint32T *)attr_mod->modAttr.attrValues[0])); + } TRACE("Modified saAmfSIRank is '%u'", si->saAmfSIRank); } else { osafassert(0); ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel