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