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

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


The following commit(s) were added to refs/heads/4.18 by this push:
     new 986d754768d SG: fix SQL exception when add security group rule with 
allowed account/group (#8616)
986d754768d is described below

commit 986d754768ddec6e7985fdcc1f2a646089621097
Author: Wei Zhou <[email protected]>
AuthorDate: Wed Mar 6 08:25:00 2024 +0100

    SG: fix SQL exception when add security group rule with allowed 
account/group (#8616)
    
    This fixes https://github.com/apache/cloudstack/issues/8595
    
    ```
    2024-02-01 16:23:52,473 INFO  [c.c.n.s.SecurityGroupManagerImpl] 
(AgentManager-Handler-16:null) (logid:) Network Group full sync for agent 1 
found 3 vms out of sync
    2024-02-01 16:23:52,473 DEBUG [c.c.n.s.SecurityGroupManagerImpl] 
(AgentManager-Handler-16:null) (logid:) Security Group Mgr v2: scheduling 
ruleset updates for 3 vms  (unique=3), current queue size=0
    2024-02-01 16:23:52,473 DEBUG [c.c.n.s.SecurityGroupManagerImpl] 
(AgentManager-Handler-16:null) (logid:) Security Group Mgr v2: done scheduling 
ruleset updates for 3 vms: num new jobs=3 num rows insert or updated=0 time 
taken=0
    2024-02-01 16:23:52,478 ERROR [c.c.n.s.SecurityGroupManagerImpl] 
(SecGrp-Worker-20:ctx-0aa3885d) (logid:472b30d2) Problem during SG work 
com.cloud.network.security.LocalSecurityGroupWorkQueue$LocalSecurityGroupWork@5
    com.cloud.utils.exception.CloudRuntimeException: DB Exception on: 
com.mysql.cj.jdbc.ClientPreparedStatement: SELECT SQL_CACHE 
security_group_vm_map.id, security_group_vm_map.security_group_id, 
security_group_vm_map.instance_id, nics.ip4_address, vm_instance.state, 
security_group.name FROM security_group_vm_map INNER JOIN nics ON 
security_group_vm_map.instance_id=nics.instance_id  INNER JOIN vm_instance ON 
security_group_vm_map.instance_id=vm_instance.id  INNER JOIN security_group ON 
s [...]
            at 
com.cloud.utils.db.GenericDaoBase.searchIncludingRemoved(GenericDaoBase.java:424)
            at 
com.cloud.utils.db.GenericDaoBase.listIncludingRemovedBy(GenericDaoBase.java:938)
            at com.cloud.utils.db.GenericDaoBase.listBy(GenericDaoBase.java:928)
            at 
com.cloud.network.security.dao.SecurityGroupVMMapDaoImpl.listBySecurityGroup(SecurityGroupVMMapDaoImpl.java:134)
            at jdk.internal.reflect.GeneratedMethodAccessor555.invoke(Unknown 
Source)
            at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.base/java.lang.reflect.Method.invoke(Method.java:566)
            at 
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
            at 
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
            at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
            at 
com.cloud.utils.db.TransactionContextInterceptor.invoke(TransactionContextInterceptor.java:34)
            at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
            at 
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
            at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
            at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
            at com.sun.proxy.$Proxy245.listBySecurityGroup(Unknown Source)
            at 
com.cloud.network.security.SecurityGroupManagerImpl2.generateRulesForVM(SecurityGroupManagerImpl2.java:246)
            at 
com.cloud.network.security.SecurityGroupManagerImpl2.sendRulesetUpdates(SecurityGroupManagerImpl2.java:177)
            at 
com.cloud.network.security.SecurityGroupManagerImpl2.work(SecurityGroupManagerImpl2.java:157)
            at 
com.cloud.network.security.SecurityGroupManagerImpl2$WorkerThread$1.run(SecurityGroupManagerImpl2.java:75)
            at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:55)
            at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:102)
            at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:52)
            at 
com.cloud.network.security.SecurityGroupManagerImpl2$WorkerThread.run(SecurityGroupManagerImpl2.java:72)
    Caused by: java.sql.SQLSyntaxErrorException: 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 '.id, security_group_vm_map.security_group_id, 
security_group_vm_map.instance_id,' at line 1
            at 
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
            at 
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
            at 
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
            ... 28 more
    ```
---
 .../java/com/cloud/network/security/dao/SecurityGroupVMMapDaoImpl.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/engine/schema/src/main/java/com/cloud/network/security/dao/SecurityGroupVMMapDaoImpl.java
 
b/engine/schema/src/main/java/com/cloud/network/security/dao/SecurityGroupVMMapDaoImpl.java
index a2ec95ccb67..803955a562c 100644
--- 
a/engine/schema/src/main/java/com/cloud/network/security/dao/SecurityGroupVMMapDaoImpl.java
+++ 
b/engine/schema/src/main/java/com/cloud/network/security/dao/SecurityGroupVMMapDaoImpl.java
@@ -131,7 +131,7 @@ public class SecurityGroupVMMapDaoImpl extends 
GenericDaoBase<SecurityGroupVMMap
         SearchCriteria<SecurityGroupVMMapVO> sc = 
ListBySecurityGroupAndStates.create();
         sc.setParameters("securityGroupId", securityGroupId);
         sc.setParameters("states", (Object[])vmStates);
-        return listBy(sc, null, true);
+        return listBy(sc, null);
     }
 
     @Override

Reply via email to