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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel