I am OK with patch except for the change mentioned below. But avnd_evt_clc_resp_evh() can be simplified and made more elegant now when cmd_type is available. I will send an additional patch that should be merged with this one. /Hans
On 08/07/2013 05:03 PM, Hans Feldt wrote: > On 7 August 2013 14:14, <praveen.malv...@oracle.com> wrote: >> osaf/services/saf/avsv/avnd/avnd_clc.c | 93 >> +++++++++++-------------- >> osaf/services/saf/avsv/avnd/include/avnd_evt.h | 2 - >> 2 files changed, 40 insertions(+), 55 deletions(-) >> >> >> At present when clc response event comes AMFND searches whole component >> database and matches the context. This context does not include component >> name. Thus AMFND can associate clc response with wrong component. The patch >> ensures that AMFND gets component name in the clc response event and thus >> solves the problem by associating clc response event with the component. >> >> diff --git a/osaf/services/saf/avsv/avnd/avnd_clc.c >> b/osaf/services/saf/avsv/avnd/avnd_clc.c >> --- a/osaf/services/saf/avsv/avnd/avnd_clc.c >> +++ b/osaf/services/saf/avsv/avnd/avnd_clc.c >> @@ -70,7 +70,6 @@ static uint32_t avnd_comp_clc_orph_resta >> >> uint32_t avnd_comp_clc_st_chng_prc(AVND_CB *, AVND_COMP *, >> SaAmfPresenceStateT, SaAmfPresenceStateT); >> >> -static uint32_t avnd_comp_clc_resp(NCS_OS_PROC_EXECUTE_TIMED_CB_INFO *); >> static uint32_t avnd_instfail_su_failover(AVND_CB *, AVND_SU *, AVND_COMP >> *); >> >> >> /*************************************************************************** >> @@ -311,33 +310,20 @@ uint32_t avnd_evt_clc_resp_evh(AVND_CB * >> AVND_CLC_EVT *clc_evt = &evt->info.clc; >> AVND_COMP *comp = 0; >> uint32_t rc = NCSCC_RC_SUCCESS; >> - uint32_t amcmd = 0; >> TRACE_ENTER(); >> >> - /* get the comp */ >> - if (clc_evt->exec_ctxt) { >> - /* => cmd successfully launched (scan the entire >> comp-database) */ >> - for (comp = (AVND_COMP >> *)ncs_patricia_tree_getnext(&cb->compdb, >> - (uint8_t >> *)0); comp; >> - comp = (AVND_COMP >> *)ncs_patricia_tree_getnext(&cb->compdb, (uint8_t *)&comp->name)) { >> - if (comp->clc_info.cmd_exec_ctxt == >> clc_evt->exec_ctxt) >> - break; >> - if (comp->clc_info.am_cmd_exec_ctxt == >> clc_evt->exec_ctxt) { >> - amcmd = 1; >> - break; >> - } >> - } >> - } else >> - /* => cmd did not launch successfully (comp is available) */ >> - comp = m_AVND_COMPDB_REC_GET(cb->compdb, clc_evt->comp_name); >> + comp = m_AVND_COMPDB_REC_GET(cb->compdb, clc_evt->comp_name); >> >> /* either other cmd is currently executing or the comp is deleted */ >> - if (!comp) >> - goto done; >> + if (comp == NULL) { >> + LOG_WA("%s: could not find comp '%s'", __FUNCTION__, >> + clc_evt->comp_name.value); >> + goto done; >> + } >> >> TRACE("'%s'", comp->name.value); >> >> - if (amcmd || clc_evt->cmd_type == AVND_COMP_CLC_CMD_TYPE_AMSTART || >> + if (clc_evt->cmd_type == AVND_COMP_CLC_CMD_TYPE_AMSTART || >> clc_evt->cmd_type == AVND_COMP_CLC_CMD_TYPE_AMSTOP) { >> TRACE("CLC command >> type:'%s'",clc_cmd_type[clc_evt->cmd_type]); >> switch (comp->clc_info.am_exec_cmd) { >> @@ -431,7 +417,7 @@ uint32_t avnd_evt_clc_resp_evh(AVND_CB * >> break; >> >> default: >> - osafassert(0); >> + goto done; > > Why this change? It will silently discard the event. > This is a typical case of assert (not osafassert) isn't it? > /Hans > > ------------------------------------------------------------------------------ Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to code-level detail for bottlenecks, with <2% overhead. Download for free and get started troubleshooting in minutes. http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel