Hi Gary,
Sure, you can push it.

Thanks
-Nagu
----- Original Message -----
From: [email protected]
To: [email protected], [email protected], 
[email protected], [email protected]
Cc: [email protected]
Sent: Thursday, May 12, 2016 6:19:24 PM GMT +05:30 Chennai, Kolkata, Mumbai, 
New Delhi
Subject: Re: [PATCH 1 of 1] amfd: stop calling saImmOmInitialize in a loop on 
SU instantiation [#1819]

Thanks Nagu.

Yes, it’s only a workaround. I will push this to all branches tomorrow?

We can replace this with your #517 patch when it’s been verified.

Thanks
Gary

On 12/05/2016, 7:58 PM, "Nagendra Kumar" <[email protected]> wrote:

>It is a workaround and as of now with some limitation, it helps system to 
>function.
>We need to work for the real solution in future.
>
>Ack.
>
>Thanks
>-Nagu
>> -----Original Message-----
>> From: Gary Lee [mailto:[email protected]]
>> Sent: 11 May 2016 15:32
>> To: [email protected]; Praveen Malviya;
>> [email protected]; Nagendra Kumar
>> Cc: [email protected]
>> Subject: [PATCH 1 of 1] amfd: stop calling saImmOmInitialize in a loop on SU
>> instantiation [#1819]
>> 
>>  osaf/services/saf/amf/amfnd/compdb.cc |   3 ++-
>>  osaf/services/saf/amf/amfnd/susm.cc   |  16 ++++++++--------
>>  2 files changed, 10 insertions(+), 9 deletions(-)
>> 
>> 
>> If immnd is down for an extended period of time, amfnd can be killed by the
>> AMF watchdog
>> as it's stuck in immutil_saImmOmInitialize(). This can happen if a non
>> OpenSAF component
>> restarts during this period.
>> 
>> saImmOmInitialize already has a potential timeout of 30s, and if we call
>> saImmOmInitialize()
>> in a loop as we do in immutil_saImmOmInitialize() then a watchdog timeout
>> is likely to be
>> triggered.
>> 
>> diff --git a/osaf/services/saf/amf/amfnd/compdb.cc
>> b/osaf/services/saf/amf/amfnd/compdb.cc
>> --- a/osaf/services/saf/amf/amfnd/compdb.cc
>> +++ b/osaf/services/saf/amf/amfnd/compdb.cc
>> @@ -1827,9 +1827,10 @@ unsigned int avnd_comp_config_get_su(AVN
>> 
>>      TRACE_ENTER2("SU'%s'", su->name.value);
>> 
>> -    error = saImmOmInitialize_cond(&immOmHandle, nullptr,
>> &immVersion);
>> +    error = saImmOmInitialize(&immOmHandle, nullptr, &immVersion);
>>      if (error != SA_AIS_OK) {
>>              LOG_CR("saImmOmInitialize failed: %u", error);
>> +            rc = NCSCC_RC_OUT_OF_MEM;
>>              goto done;
>>      }
>>      searchParam.searchOneAttr.attrName =
>> const_cast<SaImmAttrNameT>("SaImmAttrClassName");
>> diff --git a/osaf/services/saf/amf/amfnd/susm.cc
>> b/osaf/services/saf/amf/amfnd/susm.cc
>> --- a/osaf/services/saf/amf/amfnd/susm.cc
>> +++ b/osaf/services/saf/amf/amfnd/susm.cc
>> @@ -1356,17 +1356,17 @@ uint32_t avnd_evt_avd_su_pres_evh(AVND_C
>>                 Fix for the above problem is that Middleware Components
>> wont be dynamically added in the case
>>                 of openSAF SUs, so don't refresh config info if it is openSAF
>> SU. */
>> 
>> -            if ((false == su->is_ncs) && (avnd_comp_config_get_su(su) !=
>> NCSCC_RC_SUCCESS)) {
>> -                    if (cb->scs_absence_max_duration == 0) {
>> -                             m_AVND_SU_REG_FAILED_SET(su);
>> +            if ((false == su->is_ncs) && ((rc =
>> avnd_comp_config_get_su(su)) != NCSCC_RC_SUCCESS)) {
>> +                    if (rc == NCSCC_RC_OUT_OF_MEM && su-
>> >comp_list.n_nodes > 0) {
>> +                            // @todo this is a temporary workaround:
>> IMM is not accepting OM connections
>> +                            // and a SU needs to be restarted.
>> +                            LOG_CR("'%s': failed to refresh components
>> in SU. Attempt to reuse old config", __FUNCTION__);
>> +                    } else {
>> +                            m_AVND_SU_REG_FAILED_SET(su);
>>                              /* Will transition to instantiation-failed when
>> instantiated */
>>                              LOG_ER("'%s':FAILED", __FUNCTION__);
>>                              rc = NCSCC_RC_FAILURE;
>> -                    goto done;
>> -                    } else {
>> -                            // @TODO(garylee) this is a temporary
>> workaround: IMM is not accepting OM connections
>> -                            // and a component needs to be restarted.
>> -                            LOG_CR("'%s': failed to refresh components
>> in SU. Attempt to reuse old config", __FUNCTION__);
>> +                            goto done;
>>                      }
>>              }
>>              /* trigger su instantiation for pi su */



------------------------------------------------------------------------------
Mobile security can be enabling, not merely restricting. Employees who
bring their own devices (BYOD) to work are irked by the imposition of MDM
restrictions. Mobile Device Manager Plus allows you to control only the
apps on BYO-devices by containerizing them, leaving personal data untouched!
https://ad.doubleclick.net/ddm/clk/304595813;131938128;j
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to