---
 src/smf/smfd/SmfUpgradeStep.cc | 31 +++++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/src/smf/smfd/SmfUpgradeStep.cc b/src/smf/smfd/SmfUpgradeStep.cc
index 909fe12..ebf94ca 100644
--- a/src/smf/smfd/SmfUpgradeStep.cc
+++ b/src/smf/smfd/SmfUpgradeStep.cc
@@ -890,11 +890,34 @@ bool 
SmfUpgradeStep::setMaintenanceState(SmfActivationUnit &i_units) {
     }
   }
 
-  if ((result = immUtil.doImmOperations(operations)) != SA_AIS_OK) {
+if ((result = immUtil.doImmOperations(operations)) != SA_AIS_OK) {
     LOG_NO("Fails to set saAmfSUMaintenanceCampaign, rc=%s", 
saf_error(result));
-    rc = false;
-    goto exit;
-  }
+
+   // Fix for SF:2550
+
+    const uint32_t MAX_NO_RETRIES = 2;
+    uint32_t retry_cnt = 0;
+    int ret = SA_AIS_OK;
+    while (++retry_cnt <= MAX_NO_RETRIES) {
+             ret = immUtil.doImmOperations(operations);
+               if (ret != SA_AIS_OK && ret == SA_AIS_ERR_TRY_AGAIN) {
+                       /*
+                        * TRY_AGAIN is returned only when ccb is aborted
+                        *  with Resource abort in error string. Resource abort 
in
+                        *  error string is checked presently for modify 
operation.
+                        */
+                       continue;
+               }
+         }
+
+       if (ret != SA_AIS_OK){
+               LOG_NO("SmfUpgradeStep::setMaintenanceState(), fails to set all 
saAmfSUMaintenanceCampaign attr");
+                rc = false;
+                goto exit;
+       }
+
+ }
+   // Fix for SF:2550
 
 exit:
   // Delete the created SmfImmModifyOperation instances
-- 
1.9.1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to