During SU restart, component is instantiated failed. It makes
component failover. In avnd_su_si_oper_done(), the buffered msg
need removing if the SU is in disable oper state.
---
src/amf/amfnd/susm.cc | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/amf/amfnd/susm.cc b/src/amf/amfnd/susm.cc
index d8ef66ea2..d3c8226f5 100644
--- a/src/amf/amfnd/susm.cc
+++ b/src/amf/amfnd/susm.cc
@@ -309,6 +309,12 @@ uint32_t avnd_su_siq_prc(AVND_CB *cb, AVND_SU *su) {
/* initiate si asignment / removal */
rc = avnd_su_si_msg_prc(cb, su, &siq->info);
+ /* get the least-recent buffered msg, if any */
+ siq = reinterpret_cast<AVND_SU_SIQ_REC *>(m_NCS_DBLIST_FIND_LAST(&su->siq));
+ if (!siq) {
+ TRACE_LEAVE();
+ return rc;
+ }
// Siq will used to su-si respond later
// in case modify SU-SI during SURestart
if ((siq->info.msg_act != AVSV_SUSI_ACT_MOD) ||
@@ -1214,8 +1220,9 @@ uint32_t avnd_su_si_oper_done(AVND_CB *cb, AVND_SU *su,
AVND_SU_SI_REC *si) {
// Modify event during SURestart should be respond
siq = reinterpret_cast<AVND_SU_SIQ_REC *>(m_NCS_DBLIST_FIND_LAST(&su->siq));
- if (siq && (siq->info.msg_act == AVSV_SUSI_ACT_MOD) &&
- m_AVND_SU_IS_RESTART(su)) {
+ if (siq && (((siq->info.msg_act == AVSV_SUSI_ACT_MOD) &&
+ m_AVND_SU_IS_RESTART(su)) ||
+ (m_AVND_SU_OPER_STATE_IS_DISABLED(su)))) {
ncs_db_link_list_delink(&su->siq, &siq->su_dll_node);
/* delete the buffered msg */
avnd_su_siq_rec_del(avnd_cb, su, siq);
--
2.17.1
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel