er.. suggestion :-)

> On 20 Oct. 2016, at 10:20 pm, Gary Lee <[email protected]> wrote:
> 
> Hi Nagu
> 
> That’s true. But to fix this in 5.0, I think we would have to introduce a new 
> event (to notify the main thread from the mds thread), which may not be 
> appropriate.
> 
> Can we make your suggestment an enhancement ticket for 5.2?
> 
> Gary
> 
>> On 20 Oct. 2016, at 9:58 pm, Nagendra Kumar <[email protected]> wrote:
>> 
>> Hi Gary,
>>              It would be better to check whether AmfD has got NCSMDS_UP for 
>> the particular AmfND in avd_node_up_evh() and drop it if it has not got, 
>> else proceed.
>> 
>> Thanks
>> -Nagu
>> 
>>> -----Original Message-----
>>> From: Gary Lee [mailto:[email protected]]
>>> Sent: 20 October 2016 04:21
>>> To: [email protected]; [email protected];
>>> [email protected]; Nagendra Kumar; Praveen Malviya;
>>> [email protected]
>>> Cc: [email protected]
>>> Subject: [PATCH 1 of 1] amfd: handle late arrival of amfnd svc up event
>>> [#2124]
>>> 
>>> osaf/services/saf/amf/amfd/ndmsg.cc |  23 +++++++++++++++++++++++
>>> 1 files changed, 23 insertions(+), 0 deletions(-)
>>> 
>>> 
>>> if the svc up event for amfnd arrives after N2D_NODE_UP, then amfd may
>>> fail to send D2N_NODE_UP to amfnd. This will eventually cause the
>>> respective amfnd
>>> to reboot the node, due to message ID mismatches. By resetting msg IDs to
>>> 0 and
>>> adest to 0, we allow amfnd to send another N2D_NODE_UP and resume
>>> node join sequence.
>>> 
>>> diff --git a/osaf/services/saf/amf/amfd/ndmsg.cc
>>> b/osaf/services/saf/amf/amfd/ndmsg.cc
>>> --- a/osaf/services/saf/amf/amfd/ndmsg.cc
>>> +++ b/osaf/services/saf/amf/amfd/ndmsg.cc
>>> @@ -206,6 +206,21 @@ static void avd_d2n_msg_enqueue(AVD_CL_C
>>>     cb->nd_msg_queue_list.push(nd_msg);
>>> }
>>> 
>>> +void handle_nodeup_failure(AVD_CL_CB *cb, const AVSV_DND_MSG *msg)
>>> +{
>>> +   AVD_AVND* node = avd_node_find_nodeid(msg-
>>>> msg_info.d2n_node_up.node_id);
>>> +   osafassert(node != nullptr);
>>> +
>>> +   LOG_WA("failed to send node up to '%s'", node-
>>>> node_name.c_str());
>>> +
>>> +   node->snd_msg_id = 0;
>>> +   node->rcv_msg_id = 0;
>>> +   node->adest = 0;
>>> +   avd_node_state_set(node, AVD_AVND_STATE_ABSENT);
>>> +
>>> +   m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(cb, node,
>>> AVSV_CKPT_AVD_NODE_CONFIG);
>>> +}
>>> +
>>> 
>>> /*************************************************************
>>> ***************
>>>  Name          : avd_d2n_msg_dequeue
>>> 
>>> @@ -234,6 +249,14 @@ uint32_t avd_d2n_msg_dequeue(AVD_CL_CB *
>>>              */
>>>             if ((rc = ncsmds_api(&queue_elem->snd_msg)) !=
>>> NCSCC_RC_SUCCESS) {
>>>                     LOG_ER("%s: ncsmds_api failed %u",
>>> __FUNCTION__, rc);
>>> +
>>> +                   // if the svc up event for amfnd arrives after
>>> N2D_NODE_UP, then
>>> +                   // ncsmds_api(D2N_NODE_UP_MSG) may fail. Reset
>>> msg IDs to 0, and
>>> +                   // wait for the next N2D_NODE UP from amfnd
>>> +                   const AVSV_DND_MSG *d2n_msg =
>>> static_cast<AVD_DND_MSG *>(queue_elem-
>>>> snd_msg.info.svc_send.i_msg);
>>> +                   if (d2n_msg->msg_type ==
>>> AVSV_D2N_NODE_UP_MSG) {
>>> +                           handle_nodeup_failure(cb, d2n_msg);
>>> +                   }
>>>             }
>>> 
>>>             d2n_msg_free((AVD_DND_MSG *)queue_elem-
>>>> snd_msg.info.svc_send.i_msg);
> 
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most 
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> _______________________________________________
> Opensaf-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opensaf-devel


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to