osaf/services/saf/clmsv/clms/clms_plm.c |  12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)


At active controller switchover, the newly active sends node down events for
nodes that are not down.

There is a race condition on the standby between receiving the node_down
checkpoint message, which removes the node from the node_id database; and
receiving a checkpoint from PLM readiness callback COMPLETED state. This can
cause an entry to be created on the node down list, and never removed.

Don't checkpoint nodes in PLM readiness callback, if node->nodeup == 0 and state
is COMPLETED. In this case we know a node down checkpoint message has been sent
which removes the node from the node_id db on the standby. Checkpointing here
can readd it, which we don't want to do.

diff --git a/osaf/services/saf/clmsv/clms/clms_plm.c 
b/osaf/services/saf/clmsv/clms/clms_plm.c
--- a/osaf/services/saf/clmsv/clms/clms_plm.c
+++ b/osaf/services/saf/clmsv/clms/clms_plm.c
@@ -209,8 +209,8 @@ static void clms_plm_readiness_track_cal
                                                ckpt_cluster_rec();
                                        }
                                }
-                       } else { /* nodeup is zero but ee of node has changed, 
update to standby*/
-                               ckpt_node_rec(node);
+                       } else {
+                               /* node has been removed on the standby, don't 
checkpoint */
                                TRACE("Step = %d, completed, nodeup is zero", 
step);
                        }
                }
@@ -253,7 +253,13 @@ static void clms_plm_readiness_track_cal
 
        /* Clear admin_op and stat_change for the completed step */
        if ((step == SA_PLM_CHANGE_COMPLETED) || (step == 
SA_PLM_CHANGE_ABORTED)){
-               clms_clear_node_dep_list(node);
+               /*
+                * Don't checkpoint if this is COMPLETED and nodeup is 0. Node
+                * has already been removed from standby.
+                */
+               if (step != SA_PLM_CHANGE_COMPLETED || node->nodeup) {
+                       clms_clear_node_dep_list(node);
+               }
                if (step == SA_PLM_CHANGE_COMPLETED){
                        if (node->stat_change == SA_TRUE){
                                if((node->disable_reboot == SA_FALSE) && 


------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to