Hi Rafael,
We need the while loop in “SmfCampaignWrapup::executeCampComplete()” as we encountered the issue at Wrapup too while testing. Thanks Vijay -----Original Message----- From: Rafael Odzakow [mailto:[email protected]] Sent: Thursday, November 16, 2017 8:54 PM To: Vijay Roy <[email protected]> Cc: [email protected]; Lennart Lund <[email protected]> Subject: Re: [PATCH 1/1] smf: SMF created a CCB to create smfRollbackElement object, but CCB was aborted due to IMM [#2676] What about the added while loops in SmfCampaignWrapup::executeCampComplete() should they be removed now with this addition? On 11/16/2017 10:44 AM, Vijay Roy wrote: > Handling ERROR_EXIST in smfRollbackElement creation and handling > TRY_AGAIN in immCCBOperations. > --- > src/smf/smfd/SmfUpgradeAction.cc | 26 +++++++++++++++++++------- > 1 file changed, 19 insertions(+), 7 deletions(-) > > 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; > } > } > ------------------------------------------------------------------------------ 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
