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