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

Reply via email to