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
