On 02/04/2014 09:31 AM, Nagendra Kumar wrote:
> Hum, would wait for that.
>
> Here I am not able to understand your comments, please elaborate on that.
> Do you mean to break short or long commit message into three parts and name 
> the sections?
> Give some example.

OK here's a try for this ticket:

"
amfd: create comp if not found during decoding [#761]

Standby controller reboots during execution of an installation campaign.
The following be seen in syslog:
Jan 30 08:19:53 err sc2 osafamfd[15184]: avd_ckpt_dec.c:3163: 
avsv_decode_warm_sync_rsp: Assertion '0' failed.

When the operational state of an added component gets ENABLED, this is 
checkpointed
to the standby AMFD. If at this point the component does not exist in the 
standby database,
the count of async updates is not updated. Later when the mbcsv warm sync 
happens,
the mismatch in async updates count is detected and the assert happens. This 
can happen
when the applier callbacks has not yet happened on the standby AMFD. This is a 
pure timing
problem.

We fix this by creating the component in the database if it does exist just for 
the
purpose of storing the runtime attribute (op state). Later it will be filled in 
with
configuration attributes when the applier callback eventually is called. The 
async counters
stay in sync and the mismatch is not detected at warm sync.
"

Above you see the three paragraphs, not saying its perfect but I think this is 
what we want/need...

Thanks,
Hans


>
> Thanks
> -Nagu
>
>> -----Original Message-----
>> From: Hans Feldt [mailto:[email protected]]
>> Sent: 04 February 2014 13:06
>> To: Nagendra Kumar; Hans Nordebäck; Praveen Malviya
>> Cc: [email protected]
>> Subject: Re: [PATCH 1 of 1] amfd: create comp if not found during decoding
>> [#761]
>>
>>
>>
>> On 02/04/2014 06:49 AM, Nagendra Kumar wrote:
>>>>> for defects it should contain 3 paragraphs: symptom, analysis and
>>>>> change description
>>> Do we have this informed to developers or written some where ?
>>
>> I think Anders Widell is working on some text document that will be stored
>> inside the repo.
>> /Hans
>>
>>>
>>> Thanks
>>> -Nagu
>>>
>>>> -----Original Message-----
>>>> From: Hans Feldt [mailto:[email protected]]
>>>> Sent: 04 February 2014 01:58
>>>> To: Nagendra Kumar; Hans Nordebäck; Praveen Malviya
>>>> Cc: [email protected]
>>>> Subject: RE: [PATCH 1 of 1] amfd: create comp if not found during
>>>> decoding [#761]
>>>>
>>>> Please send a new patch with a corrected commit message, for defects
>>>> it should contain 3 paragraphs: symptom, analysis and change
>>>> description. See inline for comments.
>>>> "during decoding" => "during checkpointing"?
>>>> Thanks,
>>>> Hans
>>>>
>>>>> -----Original Message-----
>>>>> From: [email protected] [mailto:[email protected]]
>>>>> Sent: den 3 februari 2014 11:15
>>>>> To: Hans Feldt; Hans Nordebäck; [email protected]
>>>>> Cc: [email protected]
>>>>> Subject: [PATCH 1 of 1] amfd: create comp if not found during
>>>>> decoding [#761]
>>>>>
>>>>>    osaf/services/saf/amf/amfd/ckpt_dec.cc    |   5 +----
>>>>>    osaf/services/saf/amf/amfd/comp.cc        |  21 +++++++++++++++++++++
>>>>>    osaf/services/saf/amf/amfd/include/comp.h |   1 +
>>>>>    3 files changed, 23 insertions(+), 4 deletions(-)
>>>>>
>>>> [Hans] missing symptom description, it could look like:
>>>>
>>>> Standby osafamfd asserts with the following log:
>>>> Jan 30 08:19:53 err sc2 osafamfd[15184]: avd_ckpt_dec.c:3163:
>>>> avsv_decode_warm_sync_rsp: Assertion '0' failed.
>>>> Which results in reboot of standby controller
>>>>
>>>> Here comes the analysis...
>>>>>
>>>>> Some times, because of timing issues, apply callback is reaching
>>>>> delayed
>>>> "is reaching delayed", not proper English. Applier not apply
>>>>
>>>>> at standby controller. It happened during component oper state
>> checkpoiting.
>>>> check pointing
>>>>
>>>>> Since apply callback is not received at standby controller,
>>>>> component is not found
>>>> applier callback is not received before check pointing of comp
>>>> runtime attributes
>>>>
>>>>> in data base and counter comp_updt is mismatched during warn sync
>>>>> and standby amfd asserts.
>>>> the mismatch is detected later when periodic warm sync is done.
>>>>
>>>> Here comes the change description...
>>>>
>>>>> Fix for this is to create comp when not found in data base and wait
>>>>> for apply callback. When apply callback comes later, the other
>>>>> parameters like
>>>> there is no "wait" going on, remove. Applier, other attributes not
>>>> parameters
>>>>> su are updated.
>>>> su, you mean other attributes in comp?
>>>>
>>>>>
>>>>> diff --git a/osaf/services/saf/amf/amfd/ckpt_dec.cc
>>>>> b/osaf/services/saf/amf/amfd/ckpt_dec.cc
>>>>> --- a/osaf/services/saf/amf/amfd/ckpt_dec.cc
>>>>> +++ b/osaf/services/saf/amf/amfd/ckpt_dec.cc
>>>>> @@ -2419,10 +2419,7 @@ static uint32_t dec_comp_oper_state(AVD_
>>>>>                   return status;
>>>>>           }
>>>>>
>>>>> - if (NULL == (comp_struct = avd_comp_get(&comp_ptr-
>>>>> comp_info.name))) {
>>>>> -         LOG_ER("%s: comp not found, %s", __FUNCTION__,
>>>> comp_ptr->comp_info.name.value);
>>>>> -         return NCSCC_RC_FAILURE;
>>>>> - }
>>>>> + comp_struct = avd_comp_get_or_create(&comp_ptr-
>>>>> comp_info.name);
>>>>>
>>>>>           /* Update the fields received in this checkpoint message */
>>>>>           comp_struct->saAmfCompOperState = comp_ptr-
>> saAmfCompOperState;
>>>>> diff --git a/osaf/services/saf/amf/amfd/comp.cc
>>>>> b/osaf/services/saf/amf/amfd/comp.cc
>>>>> --- a/osaf/services/saf/amf/amfd/comp.cc
>>>>> +++ b/osaf/services/saf/amf/amfd/comp.cc
>>>>> @@ -1570,6 +1570,27 @@ static void comp_ccb_apply_cb(CcbUtilOpe
>>>>>           TRACE_LEAVE();
>>>>>    }
>>>>>
>>>>> +/**
>>>>> + * Return an Comp object if it exist, otherwise create it and
>>>>> + * return a reference to the new object.
>>>>> + * @param dn
>>>>> + *
>>>>> + * @return AVD_COMP*
>>>>> + */
>>>>> +AVD_COMP *avd_comp_get_or_create(const SaNameT *dn) {
>>>>> + AVD_COMP *comp = avd_comp_get(dn);
>>>>> +
>>>>> + if (!comp) {
>>>>> +         TRACE("'%s' does not exist, creating it", dn->value);
>>>>> +         comp = avd_comp_new(dn);
>>>>> +         osafassert(comp != NULL);
>>>>> +         avd_comp_db_add(comp);
>>>>> + }
>>>>> +
>>>>> + return comp;
>>>>> +}
>>>>> +
>>>>>    void avd_comp_constructor(void)
>>>>>    {
>>>>>           NCS_PATRICIA_PARAMS patricia_params; diff --git
>>>>> a/osaf/services/saf/amf/amfd/include/comp.h
>>>>> b/osaf/services/saf/amf/amfd/include/comp.h
>>>>> --- a/osaf/services/saf/amf/amfd/include/comp.h
>>>>> +++ b/osaf/services/saf/amf/amfd/include/comp.h
>>>>> @@ -234,5 +234,6 @@ extern AVD_COMPCS_TYPE *avd_compcstype_g
>>>> extern
>>>>> AVD_COMPCS_TYPE *avd_compcstype_getnext(const SaNameT *dn);
>> extern
>>>>> AVD_COMPCS_TYPE * avd_compcstype_find_match(const SaNameT *csi,
>>>> const
>>>>> AVD_COMP *comp);  extern void avd_compcstype_constructor(void);
>>>>> +extern AVD_COMP *avd_comp_get_or_create(const SaNameT *dn);
>>>>>
>>>>>    #endif
>>>
>>>
>>
>
>


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to