Hi Gary,
It already exists for local Amfnd, you need to do little changes.
Mds.cc:
case NCSMDS_SVC_ID_AVND:
if (evt_info->i_node_id == cb->node_id_avd) {
AVD_EVT *evt = new AVD_EVT();
evt->rcv_evt = AVD_EVT_MDS_AVND_UP;
cb->local_avnd_adest = evt_info->i_dest;
if (m_NCS_IPC_SEND(&cb->avd_mbx, evt,
NCS_IPC_PRIORITY_HIGH) != NCSCC_RC_SUCCESS) {
LOG_ER("%s: ncs_ipc_send failed",
__FUNCTION__);
delete evt;
}
}
Thanks
-Nagu
> -----Original Message-----
> From: Gary Lee [mailto:[email protected]]
> Sent: 20 October 2016 16:51
> To: Nagendra Kumar
> Cc: [email protected]; [email protected];
> [email protected]; Praveen Malviya; opensaf-
> [email protected]
> Subject: Re: [PATCH 1 of 1] amfd: handle late arrival of amfnd svc up event
> [#2124]
>
> 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