In large cluster size(lager than 36 nodes), and many components reside on each node. The runtime of nodes (AdminState and OperationalState) are take time to update in IMM and it causes the application get wrong state of node in IMM instead AMF already update its data base.
This enhancement is to update these attributes in sync to IMM. --- src/amf/amfd/node.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/amf/amfd/node.cc b/src/amf/amfd/node.cc index a78cdc08f..04f35e73c 100644 --- a/src/amf/amfd/node.cc +++ b/src/amf/amfd/node.cc @@ -442,12 +442,13 @@ void avd_node_state_set(AVD_AVND *node, AVD_AVND_STATE node_state) { */ void avd_node_oper_state_set(AVD_AVND *node, SaAmfOperationalStateT oper_state) { + SaImmAttrNameT attributeName = (char *)"saAmfNodeOperState"; if (node->saAmfNodeOperState == oper_state) { /* In the case of node failover, oper_state is disabled in the avnd_down * event. Since we dont update oper_state in avnd_down because the role is * not set to Active(there is no implementer), so updating now. */ - avd_saImmOiRtObjectUpdate(node->name, "saAmfNodeOperState", + avd_saImmOiRtObjectUpdate_sync(node->name, attributeName, SA_IMM_ATTR_SAUINT32T, &node->saAmfNodeOperState); /* Send notification for node oper state down. It is set to @@ -471,7 +472,7 @@ void avd_node_oper_state_set(AVD_AVND *node, avd_oper_state_name[node->saAmfNodeOperState], avd_oper_state_name[oper_state]); node->saAmfNodeOperState = oper_state; - avd_saImmOiRtObjectUpdate(node->name, "saAmfNodeOperState", + avd_saImmOiRtObjectUpdate_sync(node->name, attributeName, SA_IMM_ATTR_SAUINT32T, &node->saAmfNodeOperState); m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, node, AVSV_CKPT_AVND_OPER_STATE); @@ -926,7 +927,8 @@ void node_admin_state_set(AVD_AVND *node, SaAmfAdminStateT admin_state) { node->name.c_str(), avd_adm_state_name[node->saAmfNodeAdminState], avd_adm_state_name[admin_state]); node->saAmfNodeAdminState = admin_state; - avd_saImmOiRtObjectUpdate(node->name, "saAmfNodeAdminState", + SaImmAttrNameT attributeName = (char *)"saAmfNodeAdminState"; + avd_saImmOiRtObjectUpdate_sync(node->name, attributeName, SA_IMM_ATTR_SAUINT32T, &node->saAmfNodeAdminState); m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, node, AVSV_CKPT_AVND_ADMIN_STATE); -- 2.25.1 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel