From aeef1380786e65f6b0db9ab64484c83e3cea6034 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 19 Aug 2024 11:31:23 +0200 Subject: [PATCH] server: do not check affinity groups if no vm group mappings this fixes the exception in smoke test test_affinity_groups ``` 2024-08-19T08:34:15,132 ERROR [c.c.a.ApiAsyncJobDispatcher] (API-Job-Executor-87:[ctx-f7804a8e, job-9232]) (logid:b71ddec8) Unexpected exception while executing org.apache.cloudstack.api.command.admin.vm.DeployVMCmdByAdmin com.cloud.utils.exception.CloudRuntimeException: Unable to find on DB, due to: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') FOR UPDATE' at line 1 at com.cloud.utils.db.GenericDaoBase.searchIncludingRemoved(GenericDaoBase.java:441) at com.cloud.utils.db.GenericDaoBase.searchIncludingRemoved(GenericDaoBase.java:368) at com.cloud.utils.db.GenericDaoBase.search(GenericDaoBase.java:357) at com.cloud.utils.db.GenericDaoBase.lockRows(GenericDaoBase.java:343) at org.apache.cloudstack.affinity.dao.AffinityGroupDaoImpl.listByIds(AffinityGroupDaoImpl.java:171) ``` --- .../apache/cloudstack/affinity/HostAntiAffinityProcessor.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/affinity-group-processors/host-anti-affinity/src/main/java/org/apache/cloudstack/affinity/HostAntiAffinityProcessor.java b/plugins/affinity-group-processors/host-anti-affinity/src/main/java/org/apache/cloudstack/affinity/HostAntiAffinityProcessor.java index cd7708b8648a..e724f02fe98b 100644 --- a/plugins/affinity-group-processors/host-anti-affinity/src/main/java/org/apache/cloudstack/affinity/HostAntiAffinityProcessor.java +++ b/plugins/affinity-group-processors/host-anti-affinity/src/main/java/org/apache/cloudstack/affinity/HostAntiAffinityProcessor.java @@ -139,6 +139,9 @@ public boolean check(VirtualMachineProfile vmProfile, DeployDestination plannedD VirtualMachine vm = vmProfile.getVirtualMachine(); List vmGroupMappings = _affinityGroupVMMapDao.findByVmIdType(vm.getId(), getType()); + if (CollectionUtils.isEmpty(vmGroupMappings)) { + return true; + } for (AffinityGroupVMMapVO vmGroupMapping : vmGroupMappings) { // if more than 1 VM's are present in the group then check for