From 89e4e574e89198c205960bd419abf5fa2f32fb14 Mon Sep 17 00:00:00 2001 From: Jack Ding Date: Mon, 2 Apr 2018 11:17:39 -0400 Subject: [PATCH] Fix guest heartbeat status and reporting state Fixed a few day one bugs: - Heartbeat status changes are not properly passed to VIM from GuestAgent. - Heartbeat reporting state is not properly updated in guestServer when guest heartbeat is enabled. These bugs could cause heartbeat status/states mismatch among VIM-guestAgent-guestServer and result in intermittent issues. Change-Id: I2198760345821fa4af0437af252e3ec6a39978d8 Signed-off-by: Jack Ding --- mtce-common/cgts-mtce-common-1.0/guest/guestAgent.cpp | 9 ++------- mtce-common/cgts-mtce-common-1.0/guest/guestSvrMsg.cpp | 4 ++-- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/mtce-common/cgts-mtce-common-1.0/guest/guestAgent.cpp b/mtce-common/cgts-mtce-common-1.0/guest/guestAgent.cpp index 98ea342f..c2bb5647 100644 --- a/mtce-common/cgts-mtce-common-1.0/guest/guestAgent.cpp +++ b/mtce-common/cgts-mtce-common-1.0/guest/guestAgent.cpp @@ -855,18 +855,12 @@ int recv_from_guestServer ( unsigned int cmd, char * buf_ptr ) if ( instInfo_ptr ) { string state ; - string status; if ( instInfo_ptr->heartbeat.reporting == true ) state = "enabled" ; else state = "disabled" ; - if ( instInfo_ptr->heartbeating == true ) - status = "enabled" ; - else - status = "disabled" ; - if ( cmd == MTC_EVENT_HEARTBEAT_ILLHEALTH ) { ilog ("%s %s ill health notification\n", hostname.c_str(), instInfo_ptr->uuid.c_str()); @@ -879,6 +873,7 @@ int recv_from_guestServer ( unsigned int cmd, char * buf_ptr ) instInfo_ptr->heartbeating = true ; ilog ("%s %s is now heartbeating\n", hostname.c_str(), instInfo_ptr->uuid.c_str()); } + string status = "enabled"; rc = guestVimApi_svc_event ( hostname, uuid, state, status, instInfo_ptr->restart_to_str); } else @@ -888,11 +883,11 @@ int recv_from_guestServer ( unsigned int cmd, char * buf_ptr ) instInfo_ptr->heartbeating = false ; wlog ("%s %s is not heartbeating\n", hostname.c_str(), instInfo_ptr->uuid.c_str()); } + string status = "disabled"; rc = guestVimApi_svc_event ( hostname, uuid, state, status, "0"); } if ( rc != PASS ) { - /* TODO: make this an elog before delivery */ elog ("%s %s failed to send state change 'event' to vim (rc:%d)\n", hostname.c_str(), instInfo_ptr->uuid.c_str(), rc ); } diff --git a/mtce-common/cgts-mtce-common-1.0/guest/guestSvrMsg.cpp b/mtce-common/cgts-mtce-common-1.0/guest/guestSvrMsg.cpp index 65286f8d..032c2bde 100644 --- a/mtce-common/cgts-mtce-common-1.0/guest/guestSvrMsg.cpp +++ b/mtce-common/cgts-mtce-common-1.0/guest/guestSvrMsg.cpp @@ -337,8 +337,8 @@ int recv_from_guestAgent ( unsigned int cmd, char * buf_ptr ) state.c_str()); get_instInv_ptr()->add_inst ( uuid, instance ); - - manage_reporting_state ( &instance, state ); + instInfo * instInfo_ptr = get_instInv_ptr()->get_inst ( uuid ); + manage_reporting_state ( instInfo_ptr, state ); } if (daemon_get_cfg_ptr()->debug_level ) get_instInv_ptr()->print_instances();