osaf/services/saf/avsv/avd/avd_su.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
Problem: When Su admin operation is run on su, whose node is absent, then amfd return TIMEOUT because node is absent and it is not able to send message to amfnd. At the same time, Amfd increases async_updt_cnt.node_updt and send checkpoint to standby controller. On Standby controller, since node is absent so node id is not in the data base, so in dec_node_snd_msg_id, avd_node_find_nodeid return NULL and async_updt_cnt.node_updt is not increamented. This causes mismatch of async_updt_cnt.node_updt on Act controller and Standby controller during warm sync. Analysis: Amfd should return Error as it doesn't know the state of su or node. Fix: Amfd is returning BAD_OP when such condition occurs. This avoids mismatch in async_updt_cnt.node_updt between Act controller and Standby controller. diff --git a/osaf/services/saf/avsv/avd/avd_su.c b/osaf/services/saf/avsv/avd/avd_su.c --- a/osaf/services/saf/avsv/avd/avd_su.c +++ b/osaf/services/saf/avsv/avd/avd_su.c @@ -1149,6 +1149,15 @@ static void su_admin_op_cb(SaImmOiHandle goto done; } + if ((su->saAmfSUOperState == SA_AMF_OPERATIONAL_DISABLED) && + (su->su_on_node->saAmfNodeOperState == SA_AMF_OPERATIONAL_DISABLED)) { + /* This means that node on which this su is hosted, is absent. */ + LOG_NO("Admin repair request for '%s', hosting node'%s' is absent", su_name->value, + su->su_on_node->name.value); + rc = SA_AIS_ERR_BAD_OPERATION; + goto done; + } + /* forward the admin op req to the node director */ if (avd_admin_op_msg_snd(su_name, AVSV_SA_AMF_SU, op_id, su->su_on_node) == NCSCC_RC_SUCCESS) { ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel