This is an automated email from the ASF dual-hosted git repository.

weizhouapache pushed a commit to branch 4.22
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.22 by this push:
     new 4262c026d0a KVM HA: Fix CheckOnHostAnswer success flag when there is 
no heartbeat (#13373)
4262c026d0a is described below

commit 4262c026d0a7c4e17c6350a25b2c996da9c3cc48
Author: Suresh Kumar Anaparti <[email protected]>
AuthorDate: Mon Jul 6 17:26:04 2026 +0530

    KVM HA: Fix CheckOnHostAnswer success flag when there is no heartbeat 
(#13373)
---
 .../kvm/resource/wrapper/LibvirtCheckOnHostCommandWrapper.java       | 2 +-
 .../java/org/apache/cloudstack/kvm/ha/KVMHostActivityChecker.java    | 1 +
 .../cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java  | 5 ++++-
 .../java/com/cloud/hypervisor/vmware/resource/VmwareResource.java    | 2 +-
 .../resource/wrapper/xenbase/CitrixCheckOnHostCommandWrapper.java    | 2 +-
 5 files changed, 8 insertions(+), 4 deletions(-)

diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckOnHostCommandWrapper.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckOnHostCommandWrapper.java
index f901fd97ca7..c069416cca5 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckOnHostCommandWrapper.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckOnHostCommandWrapper.java
@@ -55,7 +55,7 @@ public final class LibvirtCheckOnHostCommandWrapper extends 
CommandWrapper<Check
             if (hasHeartBeat) {
                 return new CheckOnHostAnswer(command, true, "Heart is 
beating");
             } else {
-                return new CheckOnHostAnswer(command, "Heart is not beating");
+                return new CheckOnHostAnswer(command, false, "Heart is not 
beating");
             }
         } catch (final InterruptedException e) {
             return new CheckOnHostAnswer(command, "CheckOnHostCommand: can't 
get status of host: InterruptedException");
diff --git 
a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/kvm/ha/KVMHostActivityChecker.java
 
b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/kvm/ha/KVMHostActivityChecker.java
index af7441c4fd2..96fd42d4d54 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/kvm/ha/KVMHostActivityChecker.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/kvm/ha/KVMHostActivityChecker.java
@@ -109,6 +109,7 @@ public class KVMHostActivityChecker extends AdapterBase 
implements ActivityCheck
         }
 
         Status hostStatusFromNeighbour = 
checkHostStatusWithNeighbourHosts(host);
+        logger.debug("{} status reported from itself: {} and neighbor: {}", 
host.toString(), hostStatusFromItself, hostStatusFromNeighbour);
         Status hostStatus = hostStatusFromItself;
         if (hostStatusFromNeighbour == Status.Up && (hostStatusFromItself == 
Status.Disconnected || hostStatusFromItself == Status.Down)) {
             hostStatus = Status.Disconnected;
diff --git 
a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
 
b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
index 662b09a3044..aaebd8c7aeb 100644
--- 
a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
+++ 
b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
@@ -61,6 +61,7 @@ import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
+import com.cloud.agent.api.CheckOnHostAnswer;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 
@@ -3130,7 +3131,9 @@ public class LibvirtComputingResourceTest {
         assertNotNull(wrapper);
 
         final Answer answer = wrapper.execute(command, 
libvirtComputingResourceMock);
-        assertFalse(answer.getResult());
+        assertTrue(answer.getResult());
+        assertTrue(answer instanceof CheckOnHostAnswer);
+        assertFalse(((CheckOnHostAnswer)answer).isAlive());
 
         verify(libvirtComputingResourceMock, times(1)).getMonitor();
     }
diff --git 
a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
 
b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index 831e222200a..7b9f258920c 100644
--- 
a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ 
b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -5807,7 +5807,7 @@ public class VmwareResource extends ServerResourceBase 
implements StoragePoolRes
     }
 
     protected Answer execute(CheckOnHostCommand cmd) {
-        return new CheckOnHostAnswer(cmd, null, "Not Implmeneted");
+        return new CheckOnHostAnswer(cmd, null, "Not Implemented");
     }
 
     protected Answer execute(ModifySshKeysCommand cmd) {
diff --git 
a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixCheckOnHostCommandWrapper.java
 
b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixCheckOnHostCommandWrapper.java
index 5535b7e84c8..9a675c33e74 100644
--- 
a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixCheckOnHostCommandWrapper.java
+++ 
b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixCheckOnHostCommandWrapper.java
@@ -31,6 +31,6 @@ public final class CitrixCheckOnHostCommandWrapper extends 
CommandWrapper<CheckO
 
     @Override
     public Answer execute(final CheckOnHostCommand command, final 
CitrixResourceBase citrixResourceBase) {
-        return new CheckOnHostAnswer(command, "Not Implmeneted");
+        return new CheckOnHostAnswer(command, "Not Implemented");
     }
 }

Reply via email to