Ack. I would suggest(up to you) 'switchover', failover tests too after running the adminop test. Mathi.
On Thu, May 3, 2018 at 5:30 PM, Alex Jones <ajo...@rbbn.com> wrote: > Sometimes CLM will reboot a node which was locked with PLM admin command. > > admin_op and stat_change are not being cleared in COMPLETED step in PLM > readiness callback. > > Clear admin_op and stat_change. > --- > src/clm/clmd/clms.h | 2 +- > src/clm/clmd/clms_plm.cc | 7 +++---- > src/clm/clmd/clms_util.cc | 12 ++++++------ > 3 files changed, 10 insertions(+), 11 deletions(-) > > diff --git a/src/clm/clmd/clms.h b/src/clm/clmd/clms.h > index 1d9c8daf1..f7384aad0 100644 > --- a/src/clm/clmd/clms.h > +++ b/src/clm/clmd/clms.h > @@ -100,7 +100,7 @@ extern uint32_t clms_mds_msg_bcast(CLMS_CB *cb, > CLMSV_MSG *bcast_msg); > extern SaAisErrorT clms_imm_activate(CLMS_CB *cb); > extern uint32_t clms_node_trackresplist_empty(CLMS_CLUSTER_NODE > *op_node); > extern uint32_t clms_send_cbk_start_sub(CLMS_CB *cb, CLMS_CLUSTER_NODE > *node); > -extern void clms_clear_node_dep_list(CLMS_CLUSTER_NODE *node); > +extern void clms_clear_node_dep_list(CLMS_CLUSTER_NODE *node, bool > checkpoint); > extern uint32_t clms_client_del_trackresp(SaUint32T client_id); > extern CLMS_CLUSTER_NODE *clms_node_get_by_name(const SaNameT *name); > extern CLMS_CLUSTER_NODE *clms_node_getnext_by_name(const SaNameT *name); > diff --git a/src/clm/clmd/clms_plm.cc b/src/clm/clmd/clms_plm.cc > index 9c3076aa9..1ca1e1c66 100644 > --- a/src/clm/clmd/clms_plm.cc > +++ b/src/clm/clmd/clms_plm.cc > @@ -79,7 +79,7 @@ static void clms_plm_readiness_track_callback( > step completed will come and we need to clear node > list as we dont no the order of entity coming from > plm, better to remove dependency list on each node */ > - clms_clear_node_dep_list(node); > + clms_clear_node_dep_list(node, true); > > if (node->nodeup && > trackedEntities->entities[i].expectedReadinessStatus.readinessState > == > @@ -278,9 +278,8 @@ static void clms_plm_readiness_track_callback( > * 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); > - } > + clms_clear_node_dep_list(node, > + step != SA_PLM_CHANGE_COMPLETED || > node->nodeup); > if (step == SA_PLM_CHANGE_COMPLETED) { > if (node->stat_change == SA_TRUE) { > if ((node->disable_reboot == SA_FALSE) && > diff --git a/src/clm/clmd/clms_util.cc b/src/clm/clmd/clms_util.cc > index dde88788e..4b2dd19e2 100644 > --- a/src/clm/clmd/clms_util.cc > +++ b/src/clm/clmd/clms_util.cc > @@ -601,18 +601,18 @@ done: > /** > * Clear the node dependency list,made for multiple nodes in the plm > callback > */ > -void clms_clear_node_dep_list(CLMS_CLUSTER_NODE *node) { > +void clms_clear_node_dep_list(CLMS_CLUSTER_NODE *node, bool checkpoint) { > CLMS_CLUSTER_NODE *new_node = nullptr; > > node->admin_op = ADMIN_OP{}; > node->stat_change = SA_FALSE; > - ckpt_node_rec(node); > + if (checkpoint) ckpt_node_rec(node); > while (node->dep_node_list != nullptr) { > new_node = node->dep_node_list; > new_node->stat_change = SA_FALSE; > new_node->admin_op = ADMIN_OP{}; > new_node->change = SA_CLM_NODE_NO_CHANGE; > - ckpt_node_rec(new_node); > + if (checkpoint) ckpt_node_rec(new_node); > node->dep_node_list = node->dep_node_list->next; > new_node->next = nullptr; > } > @@ -670,7 +670,7 @@ uint32_t clms_clmresp_rejected(CLMS_CB *cb, > CLMS_CLUSTER_NODE *node, > CLMS_CLIENT_INFO *client = nullptr; > SaAisErrorT ais_er; > > - clms_clear_node_dep_list(node); > + clms_clear_node_dep_list(node, true); > client = clms_client_get_by_id(trk->client_id); > if (client != nullptr) { > if (client->track_flags & SA_TRACK_VALIDATE_STEP) { > @@ -775,7 +775,7 @@ uint32_t clms_clmresp_error(CLMS_CB *cb, > CLMS_CLUSTER_NODE *node) { > #ifdef ENABLE_AIS_PLM > SaAisErrorT ais_er = SA_AIS_OK; > > - clms_clear_node_dep_list(node); > + clms_clear_node_dep_list(node, true); > ais_er = saPlmReadinessTrackResponse(cb->ent_group_hdl, > node->plm_invid, > SA_PLM_CALLBACK_RESPONSE_ > ERROR); > if (ais_er != SA_AIS_OK) { > @@ -856,7 +856,7 @@ uint32_t clms_clmresp_ok(CLMS_CB *cb, > CLMS_CLUSTER_NODE *op_node, > > if (ncs_patricia_tree_size(&op_node->trackresp) == 0) { > /*Clear the node dependency list */ > - clms_clear_node_dep_list(op_node); > + clms_clear_node_dep_list(op_node, true); > ais_er = saPlmReadinessTrackResponse( > cb->ent_group_hdl, op_node->plm_invid, > SA_PLM_CALLBACK_RESPONSE_OK); > if (ais_er != SA_AIS_OK) { > -- > 2.13.6 > > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel