- When component is instantiated with SU in terminating presence state, need trigger SU fsm with instantiate event. - Need informing error recovery when amfnd fails to send callback parameters to component when component already exited. --- src/amf/amfnd/comp.cc | 23 ++++++++++++++++++++++- src/amf/amfnd/susm.cc | 9 ++++----- 2 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/src/amf/amfnd/comp.cc b/src/amf/amfnd/comp.cc index 8a11d75fb..cef94a0d4 100644 --- a/src/amf/amfnd/comp.cc +++ b/src/amf/amfnd/comp.cc @@ -2031,6 +2031,7 @@ uint32_t avnd_comp_cbk_send(AVND_CB *cb, AVND_COMP *comp, AVND_COMP_CSI_REC *csi_rec) { SaAmfCSIDescriptorT csi_desc; SaAmfCSIFlagsT csi_flag; + AVND_ERR_INFO err_info; std::string csi_name; AVSV_AMF_CBK_INFO *cbk_info = 0; AVND_COMP_CSI_REC *curr_csi = 0; @@ -2039,6 +2040,7 @@ uint32_t avnd_comp_cbk_send(AVND_CB *cb, AVND_COMP *comp, SaAmfHandleT hdl = 0; SaTimeT per = 0; uint32_t rc = NCSCC_RC_SUCCESS; + uint32_t ret = NCSCC_RC_SUCCESS; TRACE_ENTER2("'%s' %u", comp->name.c_str(), type); /* @@ -2201,7 +2203,26 @@ uint32_t avnd_comp_cbk_send(AVND_CB *cb, AVND_COMP *comp, rc = avnd_comp_cbq_send(cb, comp, dest, hdl, cbk_info, per); done: - if ((NCSCC_RC_SUCCESS != rc) && cbk_info) avsv_amf_cbk_free(cbk_info); + if ((NCSCC_RC_SUCCESS != rc) && cbk_info) { + avsv_amf_cbk_free(cbk_info); + LOG_ER("avnd_comp_cbk_send failed for comp: %s, type: %d", + comp->name.c_str(), type); + if (type == AVSV_AMF_CSI_SET) { + err_info.src = AVND_ERR_SRC_CBK_CSI_SET_FAILED; + } else if (type == AVSV_AMF_COMP_TERM) { + err_info.src = AVND_ERR_SRC_CMD_FAILED; + } else { + // For another callback types + err_info.src = AVND_ERR_SRC_MAX; + } + err_info.rec_rcvr.avsv_ext = + static_cast<AVSV_ERR_RCVR>(comp->err_info.def_rec); + ret = avnd_err_process(cb, comp, &err_info); + if (NCSCC_RC_SUCCESS != ret) { + LOG_ER("process error failed for comp: %s", + comp->name.c_str()); + } + } TRACE_LEAVE2("%u", rc); return rc; diff --git a/src/amf/amfnd/susm.cc b/src/amf/amfnd/susm.cc index 86811f1e4..5b40bdce6 100644 --- a/src/amf/amfnd/susm.cc +++ b/src/amf/amfnd/susm.cc @@ -2909,14 +2909,13 @@ uint32_t avnd_su_pres_terming_compinst_hdler(AVND_CB *cb, AVND_SU *su, avnd_su_pres_state_set(cb, su, SA_AMF_PRESENCE_INSTANTIATED); } if (m_AVND_SU_IS_RESTART(su)) { - if (su->admin_op_Id == SA_AMF_ADMIN_RESTART) - /*This can happen when SU has both restartable and non restartable - comps.Go for further instantiation.*/ - rc = avnd_su_pres_fsm_run(cb, su, 0, AVND_SU_PRES_FSM_EV_INST); - else if (m_AVND_SU_IS_FAILED(su)) { + if (m_AVND_SU_IS_FAILED(su)) { /*Before going for surestart recovery from comp restart recovery, a comp was in instantiating state, cleanup it now.*/ rc = avnd_comp_clc_fsm_run(cb, comp, AVND_COMP_CLC_PRES_FSM_EV_CLEANUP); + } else { + //Go for further instantiation. + rc = avnd_su_pres_fsm_run(cb, su, 0, AVND_SU_PRES_FSM_EV_INST); } } } -- 2.17.1 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel