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
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel