osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc |  11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)


For the si-swap operation if TIMEOUT occurs the and the node is active the 
campaign will fail.
If the node is standby SmfCampaignThread::instance() will be terminated at 
Quiesced state, and nothing will be done.

diff --git a/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc 
b/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
--- a/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
+++ b/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
@@ -4247,7 +4247,6 @@ SmfSwapThread::main(void)
        int rc = admOp.execute(0);
        while ((rc == SA_AIS_ERR_TRY_AGAIN) ||
               (rc == SA_AIS_ERR_BUSY) ||
-              (rc == SA_AIS_ERR_TIMEOUT) ||
               (rc == SA_AIS_ERR_FAILED_OPERATION)) {
 
                 if (retryCnt > max_swap_retry) {
@@ -4255,12 +4254,11 @@ SmfSwapThread::main(void)
                         goto exit_error;
                 }
 
-                if ((rc == SA_AIS_ERR_TIMEOUT) ||
-                    (rc == SA_AIS_ERR_FAILED_OPERATION)) {
-                        //A timeout or failed operation occur. It is undefined 
if the operation was successful or not.
+                if (rc == SA_AIS_ERR_FAILED_OPERATION) {
+                        //A failed operation occur. It is undefined if the 
operation was successful or not.
                         //We wait for maximum two minutes to see if the 
campaign thread is terminated (which it is in a successful swap)
                         //If not terminated, retry the SWAP operation.
-                        LOG_NO("SA_AMF_ADMIN_SI_SWAP return SA_AIS_ERR_TIMEOUT 
or SA_AIS_ERR_FAILED_OPERATION [%d]. Wait for SmfCampaignThread to die, if not 
retry", rc);
+                        LOG_NO("SA_AMF_ADMIN_SI_SWAP return  
SA_AIS_ERR_FAILED_OPERATION [%d]. Wait for SmfCampaignThread to die, if not 
retry", rc);
                         termCnt = 0;
                         while (SmfCampaignThread::instance() != NULL) {
                                 if(termCnt >= 60) { //Wait for max 2 minutes 
(60 * 2 sec)
@@ -4271,6 +4269,8 @@ SmfSwapThread::main(void)
                                 osaf_nanosleep(&sleepTime);
                                 termCnt++;
                         }
+                       goto exit_error;
+                       
                 } else { //SA_AIS_ERR_TRY_AGAIN or SA_AIS_ERR_BUSY
                         LOG_NO("SA_AMF_ADMIN_SI_SWAP return 
SA_AIS_ERR_TRY_AGAIN or SA_AIS_ERR_BUSY [%d], wait 2 seconds and retry", rc);
                         struct timespec sleepTime = { 2, 0 };
@@ -4284,6 +4284,7 @@ SmfSwapThread::main(void)
         if (rc != SA_AIS_OK) {
                 //SA_AIS_ERR_LIBRARY, SA_AIS_ERR_BAD,_HANDLE SA_AIS_ERR_INIT, 
SA_AIS_ERR,_INVALID_PARAM, SA_AIS_ERR_NO_MEMORY
                 //SA_AIS_ERR_NO_RESOURCES, SA_AIS_ERR_BAD_OPERATION, 
SA_AIS_ERR_NOT_EXIST, SA_AIS_ERR_EXIST, SA_AIS_ERR_UNAVAILABLE
+               //SA_AIS_ERR_TIMEOUT
                 LOG_NO("Admin op SA_AMF_ADMIN_SI_SWAP fail [rc = %d]", rc);
                 goto exit_error;
         }

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to