This is version 2.
Alex
On 05/26/2014 01:34 AM, praveen malviya wrote:
> Hi,
> This patch is version 2 or addition of more code on version1 based on
> review comment?
>
>
> Thanks,
> Praveen
> On 21-May-14 9:56 PM, Alex Jones wrote:
>> osaf/services/saf/amf/amfnd/clc.cc | 20 ++++++++++++++++++++
>> 1 files changed, 20 insertions(+), 0 deletions(-)
>>
>>
>> May 2 15:22:11 linux osafamfnd[2990]: NO
>> 'safSu=Management-SU1,safSg=Management-2N,safApp=ManagementApp'
>> Presence State INSTANTIATED => TERMINATION_FAILED
>> May 2 15:22:38 linux osafamfnd[2990]: ER AMF director unexpectedly
>> crashed
>> May 2 15:22:38 linux osafamfnd[2990]: Rebooting OpenSAF NodeId =
>> 131343 EE Name =
>> safEE=Linux_os_hosting_clm_node,safHE=Stirling_Blade_slot_1,safDomain=Q50chassis,
>>
>> Reason: local AVD down(Adest) or both AVD down(Vdest) received,
>> OwnNodeId = 131343, SupervisionTime = 60
>> May 2 15:22:38 linux opensaf_reboot: Rebooting local node; timeout=60
>>
>> On OpenSAF shutdown, amfnd doesn't wait for the proxied components of
>> a proxy to
>> terminate before terminating the proxy. It terminates the proxy via
>> "CLC-CLI
>> cleanup", and the proxied component via the
>> SaAmfProxiedComponentCleanupCallbackT in the proxy. If the proxied
>> component
>> takes some time to terminate, amfnd doesn't wait and terminates the
>> proxy.
>> amfnd never gets the response from SaAmfProxiedComponentCleanupCallbackT
>> (because the proxy has been terminated), and thinks that the
>> termination of the
>> proxied component timed out.
>>
>> amfnd needs to delay terminating the proxy until all the proxy's proxied
>> components have terminated.
>>
>> diff --git a/osaf/services/saf/amf/amfnd/clc.cc
>> b/osaf/services/saf/amf/amfnd/clc.cc
>> --- a/osaf/services/saf/amf/amfnd/clc.cc
>> +++ b/osaf/services/saf/amf/amfnd/clc.cc
>> @@ -831,6 +831,23 @@ uint32_t avnd_comp_clc_fsm_run(AVND_CB *
>> }
>> }
>> + /* can we clean up the proxy now? */
>> + if (m_AVND_COMP_TYPE_IS_PROXIED(comp) &&
>> + (AVND_TERM_STATE_OPENSAF_SHUTDOWN_STARTED == cb->term_state ||
>> + AVND_TERM_STATE_NODE_FAILOVER_TERMINATING == cb->term_state) &&
>> + (ev == AVND_COMP_CLC_PRES_FSM_EV_CLEANUP_SUCC ||
>> + ev == AVND_COMP_CLC_PRES_FSM_EV_CLEANUP_FAIL))
>> + {
>> + AVND_COMP *proxy = comp->pxy_comp;
>> + rc = avnd_comp_unreg_prc(cb, comp, proxy);
>> +
>> + /* if proxy got unset then we can continue with proxy's
>> termination */
>> + if (rc == NCSCC_RC_SUCCESS &&
>> !m_AVND_COMP_TYPE_IS_PROXY(proxy))
>> + {
>> + rc = avnd_comp_clc_fsm_run(avnd_cb, proxy,
>> AVND_COMP_CLC_PRES_FSM_EV_CLEANUP);
>> + }
>> + }
>> +
>> TRACE_1("'%s':Entering CLC FSM: presence state:'%s', Event:'%s'",
>> comp->name.value,pres_state[prv_st],pres_state_evt[ev]);
>> @@ -1808,6 +1825,9 @@ uint32_t avnd_comp_clc_inst_clean_hdler(
>> avnd_comp_cbq_del(cb, comp, true);
>> /* call the cleanup callback */
>> rc = avnd_comp_cbk_send(cb, comp,
>> AVSV_AMF_PXIED_COMP_CLEAN, 0, 0);
>> + } else if (m_AVND_COMP_TYPE_IS_PROXY(comp) &&
>> comp->pxied_list.n_nodes) {
>> + /* if there are still outstanding proxied components we
>> can't terminate right now */
>> + return rc;
>> } else
>> /* cleanup the comp */
>> rc = avnd_comp_clc_cmd_execute(cb, comp,
>> AVND_COMP_CLC_CMD_TYPE_CLEANUP);
>>
>
------------------------------------------------------------------------------
The best possible search technologies are now affordable for all companies.
Download your FREE open source Enterprise Search Engine today!
Our experts will assist you in its installation for $59/mo, no commitment.
Test it for FREE on our Cloud platform anytime!
http://pubads.g.doubleclick.net/gampad/clk?id=145328191&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel