During scale-out, node is stopped, 4 events received in order below.
- avd_mds_avnd_up_evh (amfnd up) then clm_track_cb(node join).
At this time node state is still in absent but node member is set to true.
Node member is set in clm_track_cb.
- avd_mds_avnd_down_evh (amfnd down) then clm_track_cb(node left).
The node member is not set to false. So the scale-in failed.

Node member should be set to false in clm_track_cb if amfd receives
node left but node state still in absent.
---
 src/amf/amfd/clm.cc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/amf/amfd/clm.cc b/src/amf/amfd/clm.cc
index f8a931aba..074783751 100644
--- a/src/amf/amfd/clm.cc
+++ b/src/amf/amfd/clm.cc
@@ -325,6 +325,9 @@ static void clm_track_cb(
             if (avd_cb->failover_list.count(node->node_info.nodeId) == 0 &&
               delay_failover(avd_cb, node->node_info.nodeId) == false) {
               avd_node_delete_nodeid(node);
+              node->node_info.member = SA_FALSE;
+              m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, node,
+                                              AVSV_CKPT_AVD_NODE_CONFIG);
             }
             goto done;
           }
-- 
2.25.1



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to