Hi Gary, There are some messages which does not required to be queued like PG_TRACK & NODE_DOWN messages During SC absence period, we are returning SA_AMF_ERROR_TRY_AGAIN for PG Track operations
Currently along with this Fix we are queuing the following messages AVSV_N2D_INFO_SU_SI_ASSIGN_MSG AVSV_N2D_OPERATION_STATE_MSG AVSV_N2D_DATA_REQUEST_MSG only missing event is Reg SU response event (AVSV_N2D_REG_SU_MSG), I think this event has to be queued. if you agree with this. I will update the patch by adding queuing for Reg SU response event also Thanks, Ravi -----Original Message----- From: Gary Lee [mailto:gary....@dektech.com.au] Sent: Wednesday, October 18, 2017 10:57 AM To: ravi-sekhar <ravisekhar.ko...@oracle.com>; hans.nordeb...@ericsson.com Cc: opensaf-devel@lists.sourceforge.net Subject: Re: [devel] [PATCH 1/1] amf: Buffer and resend data req messages in Headless state [#2601] Hi Ravi I’ve started looking at this. My initial thought is that perhaps we need to queue up all messages when is_avd_down == false && amfd_sync_required == true (ie. AMFD has come up but haven’t accepted node_up). What do you think? Will get back to you. /Gary -----Original Message----- From: ravi-sekhar <ravisekhar.ko...@oracle.com> Date: Tuesday, 17 October 2017 at 10:39 pm To: <hans.nordeb...@ericsson.com> Cc: <opensaf-devel@lists.sourceforge.net> Subject: [devel] [PATCH 1/1] amf: Buffer and resend data req messages in Headless state [#2601] --- src/amf/amfnd/di.cc | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/src/amf/amfnd/di.cc b/src/amf/amfnd/di.cc index 2dc023c..1e0d682 100644 --- a/src/amf/amfnd/di.cc +++ b/src/amf/amfnd/di.cc @@ -998,21 +998,30 @@ uint32_t avnd_di_object_upd_send(AVND_CB *cb, AVSV_PARAM_INFO *param) { uint32_t rc = NCSCC_RC_SUCCESS; TRACE_ENTER2("Comp '%s'", osaf_extended_name_borrow(¶m->name)); - if (cb->is_avd_down == true) { - TRACE_LEAVE2("AVD is down. %u", rc); - return rc; - } - - memset(&msg, 0, sizeof(AVND_MSG)); - /* populate the msg */ + memset(&msg, 0, sizeof(AVND_MSG)); msg.info.avd = static_cast<AVSV_DND_MSG *>(calloc(1, sizeof(AVSV_DND_MSG))); msg.type = AVND_MSG_AVD; msg.info.avd->msg_type = AVSV_N2D_DATA_REQUEST_MSG; - msg.info.avd->msg_info.n2d_data_req.msg_id = ++(cb->snd_msg_id); msg.info.avd->msg_info.n2d_data_req.node_id = cb->node_info.nodeId; msg.info.avd->msg_info.n2d_data_req.param_info = *param; + if ((cb->is_avd_down == true) || (cb->amfd_sync_required == true)) { + msg.info.avd->msg_info.n2d_data_req.msg_id = 0; + if (avnd_diq_rec_add(cb, &msg) == nullptr) { + rc = NCSCC_RC_FAILURE; + } + LOG_NO( + "avnd_di_object_upd_send() deferred as AMF director is offline(%d)," + " or sync is required(%d)", + cb->is_avd_down, cb->amfd_sync_required); + + TRACE_LEAVE2("AVD is down. %u", rc); + return rc; + } else { + msg.info.avd->msg_info.n2d_data_req.msg_id = ++(cb->snd_msg_id); + } + /* send the msg to AvD */ rc = avnd_di_msg_send(cb, &msg); if (NCSCC_RC_SUCCESS == rc) msg.info.avd = 0; @@ -1515,9 +1524,20 @@ void avnd_diq_rec_send_buffered_msg(AVND_CB *cb) { pending_rec->msg.info.avd->msg_info.n2d_opr_state.rec_rcvr .raw); ++iter; - } else { - ++iter; - } + } else if (pending_rec->msg.info.avd->msg_type == AVSV_N2D_DATA_REQUEST_MSG && + pending_rec->msg.info.avd->msg_info.n2d_data_req.msg_id == 0) { + pending_rec->msg.info.avd->msg_info.n2d_data_req.msg_id = + ++(cb->snd_msg_id); + + LOG_NO( + "Found and resend buffered Data Req msg for SU:'%s', msg_id:'%u'", + osaf_extended_name_borrow(&pending_rec->msg.info.avd->msg_info + .n2d_data_req.param_info.name), + pending_rec->msg.info.avd->msg_info.n2d_data_req.msg_id); + ++iter; + } else { + ++iter; + } } TRACE("retransmit message to amfd"); -- 1.9.1 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! https://urldefense.proofpoint.com/v2/url?u=http-3A__sdm.link_slashdot&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=rFCQ76TW5HZUgA7b20ApVcXgXru6mvz4fvCm1_H6w1k&m=_B8vfWmVodcwGLVWeK6LJ5kV9_6Z39lakp7QX8LKQzk&s=tpxAiV8CXUFAPD5RvnnpQZoFhOdQrBc7h-EA0c9AfZM&e= _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.sourceforge.net_lists_listinfo_opensaf-2Ddevel&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=rFCQ76TW5HZUgA7b20ApVcXgXru6mvz4fvCm1_H6w1k&m=_B8vfWmVodcwGLVWeK6LJ5kV9_6Z39lakp7QX8LKQzk&s=psJ9buGgwHkQZjvgL9KVS9M2C3plzno6CO0Ksv_kKFA&e= ------------------------------------------------------------------------------ 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 Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel