osaf/services/saf/amf/amfd/sg_2n_fsm.cc | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
During si-swap, when su goes into terminating state, amf need to respond back to imm with error as SA_AIS_ERR_BAD_OPERATION. As of now, Amf is not even responding to imm in case of error during si-swap. This causes Amf to respond back to previous si operation result when another si-swap operation is successfully executed as invocation is not reset for previous si-swap operation. diff --git a/osaf/services/saf/amf/amfd/sg_2n_fsm.cc b/osaf/services/saf/amf/amfd/sg_2n_fsm.cc --- a/osaf/services/saf/amf/amfd/sg_2n_fsm.cc +++ b/osaf/services/saf/amf/amfd/sg_2n_fsm.cc @@ -920,6 +920,16 @@ static uint32_t avd_sg_2n_su_fault_su_op if (su->sg_of_su->su_oper_list.su == su) { su_ha_state = avd_su_state_determine(su); if (su_ha_state == SA_AMF_HA_QUIESCED) { + if (su->su_switch == AVSV_SI_TOGGLE_SWITCH) { + AVD_SU_SI_REL *temp_susi; + for (temp_susi = su->list_of_susi; temp_susi != NULL; temp_susi = temp_susi->su_next) { + if (temp_susi->si->invocation != 0) { + avd_saImmOiAdminOperationResult(cb->immOiHandle, + temp_susi->si->invocation, SA_AIS_ERR_BAD_OPERATION); + temp_susi->si->invocation = 0; + } + } + } m_AVD_SET_SU_SWITCH(cb, su, AVSV_SI_TOGGLE_STABLE); } else if (su_ha_state == SA_AMF_HA_QUIESCING) { if (avd_sidep_si_dependency_exists_within_su(su)) { ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel