Handling ERROR_EXIST in smfRollbackElement creation and handling TRY_AGAIN in immCCBOperations. --- src/smf/smfd/SmfCampaignWrapup.cc | 28 +++++++--------------------- src/smf/smfd/SmfUpgradeAction.cc | 26 +++++++++++++++++++------- 2 files changed, 26 insertions(+), 28 deletions(-)
diff --git a/src/smf/smfd/SmfCampaignWrapup.cc b/src/smf/smfd/SmfCampaignWrapup.cc index 934f2f2..8ecc59b 100644 --- a/src/smf/smfd/SmfCampaignWrapup.cc +++ b/src/smf/smfd/SmfCampaignWrapup.cc @@ -244,29 +244,15 @@ bool SmfCampaignWrapup::executeCampComplete() { if (rc == true) { for (auto& elem : m_campCompleteAction) { - doImmOpTimer.set_timeout_time(60000); - while (doImmOpTimer.is_timeout() == false) { - ais_rc = (*elem).execute(SmfCampaignThread::instance()->getImmHandle(), + ais_rc = (*elem).execute(SmfCampaignThread::instance()->getImmHandle(), &completeRollbackDn); - if (ais_rc == SA_AIS_ERR_TRY_AGAIN) { - base::Sleep(base::kFiveHundredMilliseconds); - continue; - } else if (ais_rc != SA_AIS_OK) { - LOG_WA("%s: SmfCampaignWrapup::executeCampComplete Fail '%s'", - __FUNCTION__, saf_error(ais_rc)); - rc = false; - } - break; - } - if (doImmOpTimer.is_timeout() == true && ais_rc != SA_AIS_OK) { - LOG_WA("%s: SmfCampaignWrapup::executeCampComplete(): " - " m_campCompleteAction timeout Fail '%s'", - __FUNCTION__, saf_error(ais_rc)); - rc = false; + if (ais_rc != SA_AIS_OK) { + LOG_NO("%s: SmfCampaignWrapup::executeCampComplete Fail '%s'", + __FUNCTION__, saf_error(ais_rc)); + rc = false; + break; + } } - if (rc == false) - break; - } } if (rc == true) diff --git a/src/smf/smfd/SmfUpgradeAction.cc b/src/smf/smfd/SmfUpgradeAction.cc index 94c3dfd..af75cd7 100644 --- a/src/smf/smfd/SmfUpgradeAction.cc +++ b/src/smf/smfd/SmfUpgradeAction.cc @@ -28,6 +28,7 @@ #include "smf/smfd/SmfUtils.h" #include "smfd.h" #include "smf/smfd/SmfTargetTemplate.h" +#include "base/time.h" /* ======================================================================== * DEFINITIONS @@ -460,6 +461,7 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT i_oiHandle, const std::string* i_rollbackDn) { SaAisErrorT result = SA_AIS_OK; SmfRollbackCcb* rollbackCcb = NULL; + base::Timer doImmOpTimer(60000); TRACE_ENTER(); @@ -473,8 +475,8 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT i_oiHandle, immRollbackCcbDn += ","; immRollbackCcbDn += *i_rollbackDn; - if ((result = smfCreateRollbackElement(immRollbackCcbDn, i_oiHandle)) != - SA_AIS_OK) { + result = smfCreateRollbackElement(immRollbackCcbDn, i_oiHandle); + if ((result != SA_AIS_OK) && (result != SA_AIS_ERR_EXIST)) { LOG_ER( "SmfImmCcbAction::execute failed to create rollback element %s, rc=%s", immRollbackCcbDn.c_str(), saf_error(result)); @@ -490,11 +492,21 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT i_oiHandle, } if (m_operations.size() > 0) { - SmfImmUtils immUtil; - if ((result = immUtil.doImmOperations(m_operations, rollbackCcb)) != - SA_AIS_OK) { - delete rollbackCcb; - rollbackCcb = NULL; + + doImmOpTimer.set_timeout_time(60000); + while (doImmOpTimer.is_timeout() == false) { + SmfImmUtils immUtil; + result = immUtil.doImmOperations(m_operations, rollbackCcb); + if (result == SA_AIS_ERR_TRY_AGAIN) { + base::Sleep(base::kFiveHundredMilliseconds); + continue; + } else if (result != SA_AIS_OK) { + LOG_WA("%s: SmfImmCcbAction:execute Fail '%s'", + __FUNCTION__, saf_error(result)); + delete rollbackCcb; + rollbackCcb = NULL; + } + break; } } -- 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 Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel