Execution of the campaign will get failed if getting timeout
during performing admin operation.
This ticket adds some retries in such case or in case of getting
SA_AIS_ERR_BAD_HANDLE.
---
src/smf/smfd/SmfUtils.cc | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/smf/smfd/SmfUtils.cc b/src/smf/smfd/SmfUtils.cc
index c2931c84b..b777d2d3c 100644
--- a/src/smf/smfd/SmfUtils.cc
+++ b/src/smf/smfd/SmfUtils.cc
@@ -254,14 +254,17 @@ bool SmfImmUtils::initialize(void) {
bool SmfImmUtils::finalize(void) {
if (m_ownerHandle != 0) {
(void)immutil_saImmOmAdminOwnerFinalize(m_ownerHandle);
+ m_ownerHandle = 0;
}
if (m_accessorHandle != 0) {
(void)immutil_saImmOmAccessorFinalize(m_accessorHandle);
+ m_accessorHandle = 0;
}
if (m_omHandle != 0) {
(void)immutil_saImmOmFinalize(m_omHandle);
+ m_omHandle = 0;
}
return true;
@@ -584,6 +587,7 @@ SaAisErrorT SmfImmUtils::callAdminOperation(
TRACE("contains NO parameters");
}
+retry_admop:
rc = immutil_saImmOmAdminOwnerSet(m_ownerHandle, objectNames, SA_IMM_ONE);
if (rc != SA_AIS_OK) {
LOG_NO("Fail to set admin owner, rc=%s, dn=[%s]", saf_error(rc),
@@ -606,6 +610,14 @@ SaAisErrorT SmfImmUtils::callAdminOperation(
retry--;
}
+ // Handle recovery and retry the admin operation.
+ if (retry && (rc == SA_AIS_ERR_TIMEOUT || rc == SA_AIS_ERR_BAD_HANDLE)) {
+ finalize();
+ initialize();
+ sleep(2);
+ goto retry_admop;
+ }
+
if (retry <= 0) {
LOG_NO(
"Fail to invoke admin operation, too many SA_AIS_ERR_TRY_AGAIN, giving
up. dn=[%s], opId=[%u]",
--
2.18.0
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel