Hi Lennart, Reviewed the patch. Ack.
/Neel. On 2016/11/11 09:27 PM, Lennart Lund wrote: > Hi Neel, > > "What is the reason for retrying fro BAD_OPERATION?" > In order to create a Node Group several handles has to be created. A Failed > handle will result in return code BAD_HANDLE > It is also needed to become admin owner of node group parent. It is also > possible that we still have a valid handle but not a valid admin owner. This > will result in return code BAD_OPERATION > > Thanks > Lennart > > >> -----Original Message----- >> From: Neelakanta Reddy [mailto:reddy.neelaka...@oracle.com] >> Sent: den 11 november 2016 06:07 >> To: Lennart Lund <lennart.l...@ericsson.com>; Rafael Odzakow >> <rafael.odza...@ericsson.com> >> Cc: opensaf-devel@lists.sourceforge.net >> Subject: Re: [PATCH 1 of 1] smf: Fails to create a node group, admin >> owner/handle is lost [#2153] >> >> Hi Lennart, >> >> comments inline >> >> On 2016/11/07 05:42 PM, Lennart Lund wrote: >>> osaf/services/saf/smfsv/smfd/SmfUpgradeStep.cc | 46 >> +++++++++++++++++++------ >>> osaf/services/saf/smfsv/smfd/SmfUpgradeStep.hh | 1 + >>> 2 files changed, 36 insertions(+), 11 deletions(-) >>> >>> >>> Recreate handles and admin owner if creating a node group fail >>> >>> diff --git a/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.cc >> b/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.cc >>> --- a/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.cc >>> +++ b/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.cc >>> @@ -2816,6 +2816,17 @@ SmfAdminOperation::SmfAdminOperation(std >>> m_smfKeepDuState = true; >>> } >>> >>> + // Create an instance unique name for a node group IMM object >>> + // using an instance number. >>> + m_instance_number = m_next_instance_number++; >>> + m_instanceNodeGroupName = >> "safAmfNodeGroup=smfLockAdmNg"+ >>> + std::to_string(m_instance_number); >>> + m_admin_owner_name ="smfNgAdmOwnerName"; >>> + TRACE("%s m_instanceNodeGroupName '%s'",__FUNCTION__, >>> + m_instanceNodeGroupName.c_str()); >>> + TRACE("%s m_NodeGroupAdminOwnerName '%s'", >> __FUNCTION__, >>> + m_admin_owner_name.c_str()); >>> + >>> // Note: >>> // If any of the following steps fails m_creation_fail is set to true >>> // and an immediate return is done >>> @@ -2835,12 +2846,6 @@ SmfAdminOperation::SmfAdminOperation(std >>> m_creation_fail = true; >>> return; >>> } >>> - >>> - // Create an instance unique name for a node group IMM object >> using an >>> - // instance number. >>> - m_instance_number = m_next_instance_number++; >>> - m_instanceNodeGroupName = >> "safAmfNodeGroup=smfLockAdmNg"+ >>> - std::to_string(m_instance_number); >>> } >>> >>> SmfAdminOperation::~SmfAdminOperation() >>> @@ -3103,7 +3108,8 @@ bool SmfAdminOperation::initNodeGroupOm( >>> timeout_try_cnt = 6; >>> while (timeout_try_cnt > 0) { >>> ais_rc = >> immutil_saImmOmAdminOwnerInitialize(m_omHandle, >>> - const_cast<char*> >> ("smfSetAdminStateOwner"), >>> + const_cast<char*> >>> + (m_admin_owner_name.c_str()), >>> SA_TRUE, &m_ownerHandle); >>> if (ais_rc != SA_AIS_ERR_TIMEOUT) >>> break; >>> @@ -3162,7 +3168,8 @@ bool SmfAdminOperation::becomeAdminOwner >>> objectNames, >> SA_IMM_SUBTREE); >>> bool rc = true; >>> if (ais_rc != SA_AIS_OK) { >>> - LOG_NO("%s: saImmOmAdminOwnerSet Fail '%s'", >> __FUNCTION__, >>> + LOG_NO("%s: saImmOmAdminOwnerSet owner name '%s' >> Fail '%s'", >>> + __FUNCTION__, m_admin_owner_name.c_str(), >>> saf_error(ais_rc)); >>> } >>> >>> @@ -3470,7 +3477,9 @@ bool SmfAdminOperation::createNodeGroup( >>> { >>> TRACE_ENTER(); >>> >>> - TRACE("\t uniqueNodeName '%s'", >> m_instanceNodeGroupName.c_str()); >>> + TRACE("\t unique Node name '%s'", >> m_instanceNodeGroupName.c_str()); >>> + TRACE("\t unique Admin owner name '%s'", >>> + m_admin_owner_name.c_str()); >>> >>> // ------------------------------------ >>> // Attribute descriptor for the node name >>> @@ -3556,7 +3565,7 @@ bool SmfAdminOperation::createNodeGroup( >>> // Create the node group >>> m_errno = SA_AIS_OK; >>> bool method_rc = false; >>> - const uint32_t MAX_NO_RETRIES = 2; >>> + const uint32_t MAX_NO_RETRIES = 4; >>> uint32_t retry_cnt = 0; >>> while (++retry_cnt <= MAX_NO_RETRIES) { >>> // Creating the node group object will fail if a >>> previously >>> @@ -3585,7 +3594,22 @@ bool SmfAdminOperation::createNodeGroup( >>> break; >>> } >>> continue; >>> - } else if (m_errno != SA_AIS_OK) { >>> + } else if (m_errno == SA_AIS_ERR_BAD_HANDLE || >>> + m_errno == SA_AIS_ERR_BAD_OPERATION) { >> What is the reason for retrying fro BAD_OPERATION? >> >> Thanks, >> Neel. >> >>> + LOG_NO("%s: saImmOmCcbObjectCreate_2 Fail %s", >>> + __FUNCTION__, saf_error(m_errno)); >>> + finalizeNodeGroupOm(); >>> + bool rc = initNodeGroupOm(); >>> + if (rc == false) { >>> + LOG_NO("%s: initNodeGroupOm() Fail", >>> + __FUNCTION__); >>> + method_rc = false; >>> + break; >>> + } >>> + TRACE("\t Try again after %s", >>> + saf_error(m_errno)); >>> + continue; >>> + } else if (m_errno != SA_AIS_OK) { >>> LOG_NO("%s: saImmOmCcbObjectCreate_2() '%s' Fail >>> %s", >>> __FUNCTION__, nGnodeName, >>> saf_error(m_errno)); >>> method_rc = false; >>> diff --git a/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.hh >> b/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.hh >>> --- a/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.hh >>> +++ b/osaf/services/saf/smfsv/smfd/SmfUpgradeStep.hh >>> @@ -907,6 +907,7 @@ class SmfAdminOperation { >>> bool m_smfKeepDuState {false}; >>> unsigned int m_instance_number {0}; >>> std::string m_instanceNodeGroupName {""}; >>> + std::string m_admin_owner_name {""}; >>> >>> DELETE_COPY_AND_MOVE_OPERATORS(SmfAdminOperation); >>> }; ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel