Application can receive START step after responding to VALIDATE step after
EE has uninstantiated.
Ongoing admin operations are not cleaned up after EE uninstantiates.
Clean up ongoing admin operations and tracking when an EE uninstantiates.
---
src/plm/plmd/plms_plmc.c | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/src/plm/plmd/plms_plmc.c b/src/plm/plmd/plms_plmc.c
index cf8687219..566f4559b 100644
--- a/src/plm/plmd/plms_plmc.c
+++ b/src/plm/plmd/plms_plmc.c
@@ -645,6 +645,48 @@ SaUint32T plms_plmc_tcp_disconnect_process(PLMS_ENTITY
*ent)
} else { /* If the entity is in insvc, then got to make the entity
to move to OOS.*/
+ if (ent->adm_op_in_progress &&
+ ent->adm_op_in_progress != SA_PLM_CAUSE_EE_RESTART) {
+ PLMS_CB *cb = plms_cb;
+
+ /*
+ * clean up the current admin op since we are about to
+ * go OOS
+ */
+ ret_err = saImmOiAdminOperationResult(
+ cb->oi_hdl, ent->trk_info->inv_id, SA_AIS_OK);
+ if (NCSCC_RC_SUCCESS != ret_err) {
+ LOG_ER("Sending admin response to IMM failed. "
+ "IMM Ret code: %d",
+ ret_err);
+ }
+
+ PLMS_ENTITY_GROUP_INFO_LIST *head =
+ ent->trk_info->group_info_list;
+ while (head) {
+ plms_inv_to_cbk_in_grp_trk_rmv(
+ head->ent_grp_inf,
+ ent->trk_info);
+ head = head->next;
+ }
+
+ plms_trk_info_free(ent->trk_info);
+ ent->trk_info = 0;
+
+ if (ent->adm_op_in_progress == SA_PLM_CAUSE_SHUTDOWN ||
+ ent->adm_op_in_progress == SA_PLM_CAUSE_LOCK)
+ {
+ plms_admin_state_set(ent,
+ SA_PLM_EE_ADMIN_LOCKED,
+ NULL,
+ SA_NTF_OBJECT_OPERATION,
+ SA_PLM_NTFID_STATE_CHANGE_ROOT);
+ }
+
+ ent->adm_op_in_progress = false;
+ ent->am_i_aff_ent = false;
+ }
+
/* Get all the affected entities.*/
plms_affected_ent_list_get(ent, &aff_ent_list, 0);
--
2.14.4
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel