---
src/amf/amfd/imm.cc | 2 ++
src/amf/amfd/node.cc | 26 ++++++++++++++++++++++++++
src/amf/amfd/node.h | 1 +
3 files changed, 29 insertions(+)
diff --git a/src/amf/amfd/imm.cc b/src/amf/amfd/imm.cc
index 82d2b13..03a91cc 100644
--- a/src/amf/amfd/imm.cc
+++ b/src/amf/amfd/imm.cc
@@ -41,6 +41,7 @@
#include "amf/common/amf_defs.h"
#include "amf/amfd/imm.h"
#include "amf/amfd/cluster.h"
+#include "amf/amfd/node.h"
#include "amf/amfd/app.h"
#include "amf/amfd/sgtype.h"
#include "amf/amfd/sg.h"
@@ -2167,6 +2168,7 @@ static void *avd_imm_reinit_bg_thread(void *_cb) {
osaf_mutex_unlock_ordie(&imm_reinit_mutex);
exit(EXIT_FAILURE);
}
+ avd_check_nodes_after_renit_imm();
} else {
/* become applier and re-read the config */
rc = avd_imm_applier_set();
diff --git a/src/amf/amfd/node.cc b/src/amf/amfd/node.cc
index 0ffcfb7..b6e57f2 100644
--- a/src/amf/amfd/node.cc
+++ b/src/amf/amfd/node.cc
@@ -46,6 +46,32 @@ bool NodeNameCompare::operator()(const AVD_AVND *lhs, const
AVD_AVND *rhs) {
return *lhs < *rhs;
}
+void avd_check_nodes_after_renit_imm() {
+ TRACE_ENTER();
+ SaImmAccessorHandleT accessorHandle;
+ immutil_saImmOmAccessorInitialize(avd_cb->immOmHandle, &accessorHandle);
+
+ AmfDb<std::string, AVD_AVND>::iterator it;
+ for (it = node_name_db->begin(); it != node_name_db->end(); it++)
+ {
+ const SaImmAttrValuesT_2 **attributes;
+ const std::string dn = it->first.c_str();
+ SaImmAttrNameT attrName = const_cast<SaImmAttrNameT>("saAmfNodeClmNode");
+ SaImmAttrNameT attributeNames[] = {attrName, nullptr};
+ SaAisErrorT rc =
+ immutil_saImmOmAccessorGet_o2(accessorHandle, dn.c_str(),
+ attributeNames,
+ (SaImmAttrValuesT_2 ***)&attributes);
+ if (rc == SA_AIS_ERR_NOT_EXIST) {
+ LOG_WA("Remove node %s after reinit IMM", dn.c_str());
+ avd_node_delete_nodeid(it->second);
+ avd_node_delete(it->second);
+ }
+ }
+ immutil_saImmOmAccessorFinalize(accessorHandle);
+ TRACE_LEAVE();
+}
+
uint32_t avd_node_add_nodeid(AVD_AVND *node) {
if ((node_id_db->find(node->node_info.nodeId) == nullptr) &&
(node->node_info.nodeId != 0)) {
diff --git a/src/amf/amfd/node.h b/src/amf/amfd/node.h
index e64bf8c..9fe9f19 100644
--- a/src/amf/amfd/node.h
+++ b/src/amf/amfd/node.h
@@ -240,5 +240,6 @@ extern bool are_all_ngs_in_unlocked_state(const AVD_AVND
*node);
extern bool any_ng_in_locked_in_state(const AVD_AVND *node);
void avd_ng_restore_headless_states(AVD_CL_CB *cb,
struct avd_su_si_rel_tag *susi);
+void avd_check_nodes_after_renit_imm();
#endif // AMF_AMFD_NODE_H_
--
2.7.4
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel