Hi Lennart,

This defect is related to unconditional delay of 2 seconds.
will open another defect/enhancement  to fix Smfutil unpredictable 
timeout and use smfutil in nodegroups as well .

Thanks,
Neel.

On 2016/11/30 02:54 PM, Lennart Lund wrote:
> Hi Neel
>
> In handling of admin state of node groups there is a similar loop that from 
> the beginning was a copy of the loop in SmfUtils. I have changed this loop to 
> remove the incorrect 2 sec sleep and also fixed the unpredictable timeout 
> time for the loop. I was thinking that the loop in SmfUtils should be fixed 
> in the same way and also make it possible to use the SmfUtil admin operation 
> handling with node groups as well. What do you think about this?
>
> Thanks
> Lennart
>
>> -----Original Message-----
>> From: [email protected] [mailto:[email protected]]
>> Sent: den 30 november 2016 08:53
>> To: Lennart Lund <[email protected]>; Rafael Odzakow
>> <[email protected]>; Tai Chi Dinh <[email protected]>
>> Cc: [email protected]
>> Subject: [PATCH 1 of 1] smf: Avoid uncditional sleep when calling
>> adminoperation[#2211]
>>
>>   osaf/services/saf/smfsv/smfd/SmfUtils.cc |  26 +++++++++++++++-----------
>>   1 files changed, 15 insertions(+), 11 deletions(-)
>>
>>
>> diff --git a/osaf/services/saf/smfsv/smfd/SmfUtils.cc
>> b/osaf/services/saf/smfsv/smfd/SmfUtils.cc
>> --- a/osaf/services/saf/smfsv/smfd/SmfUtils.cc
>> +++ b/osaf/services/saf/smfsv/smfd/SmfUtils.cc
>> @@ -583,19 +583,23 @@ SmfImmUtils::callAdminOperation(const st
>>      }
>>
>>      /* Call the admin operation */
>> -    do {
>> -            TRACE("call immutil_saImmOmAdminOperationInvoke_2");
>> +
>> +    TRACE("call immutil_saImmOmAdminOperationInvoke_2");
>> +    rc = immutil_saImmOmAdminOperationInvoke_2(m_ownerHandle,
>> &objectName, 0, i_operationId, i_params,
>> +                    &returnValue, i_timeout);
>> +    while ((rc == SA_AIS_OK) && (returnValue ==
>> SA_AIS_ERR_TRY_AGAIN)){
>> +            sleep(2);
>>              rc =
>> immutil_saImmOmAdminOperationInvoke_2(m_ownerHandle,
>> &objectName, 0, i_operationId, i_params,
>> -                                                       &returnValue,
>> i_timeout);
>> -            if (retry <= 0) {
>> -                    LOG_NO("Fail to invoke admin operation, too many
>> SA_AIS_ERR_TRY_AGAIN, giving up. dn=[%s], opId=[%u]",
>> -                           i_dn.c_str(), i_operationId);
>> -                    rc = SA_AIS_ERR_TRY_AGAIN;
>> -                    goto done;
>> -            }
>> -            sleep(2);
>> +                            &returnValue, i_timeout);
>>              retry--;
>> -    } while ((rc == SA_AIS_OK) && (returnValue ==
>> SA_AIS_ERR_TRY_AGAIN));
>> +    }
>> +
>> +    if (retry <= 0) {
>> +            LOG_NO("Fail to invoke admin operation, too many
>> SA_AIS_ERR_TRY_AGAIN, giving up. dn=[%s], opId=[%u]",
>> +                            i_dn.c_str(), i_operationId);
>> +            rc = SA_AIS_ERR_TRY_AGAIN;
>> +            goto done;
>> +    }
>>
>>      if ( rc != SA_AIS_OK) {
>>              LOG_NO("Fail to invoke admin operation, rc=%s. dn=[%s],
>> opId=[%u]",saf_error(rc), i_dn.c_str(), i_operationId);


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to