From 9b669f0648a8190fb45871af2bfb8578cdc430a0 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Mon, 9 Mar 2015 16:29:05 +0530 Subject: [PATCH] CLOUDSTACK-7639: make cidr updation more efficient check and update only when required Signed-off-by: Rohit Yadav (cherry picked from commit b879916f5c64ddbca8713852b2c0ac187e9be1ff) Signed-off-by: Rohit Yadav --- .../com/cloud/network/vpc/NetworkACLItemCidrsDao.java | 2 ++ .../network/vpc/dao/NetworkACLItemCidrsDaoImpl.java | 11 +++++++++++ .../cloud/network/vpc/dao/NetworkACLItemDaoImpl.java | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsDao.java b/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsDao.java index 5e49368de7e..3b661faf2a9 100644 --- a/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsDao.java +++ b/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsDao.java @@ -31,6 +31,8 @@ public interface NetworkACLItemCidrsDao extends GenericDao cidrs); + void updateCidrs(long networkACLItemId, List cidrs); + List getCidrs(long networkACLItemId); @DB diff --git a/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemCidrsDaoImpl.java b/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemCidrsDaoImpl.java index 7c02f8b554b..4c2574e6094 100644 --- a/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemCidrsDaoImpl.java +++ b/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemCidrsDaoImpl.java @@ -64,6 +64,17 @@ public class NetworkACLItemCidrsDaoImpl extends GenericDaoBase cidrs) { + List oldCidrs = getCidrs(networkACLItemId); + if (!(oldCidrs.size() == cidrs.size() && oldCidrs.equals(cidrs))) { + SearchCriteria sc = cidrsSearch.create(); + sc.setParameters("networkAclItemId", networkACLItemId); + remove(sc); + persist(networkACLItemId, cidrs); + } + } + /* (non-Javadoc) * @see com.cloud.network.dao.NetworkAclItemCidrsDao#getCidrs(long) */ diff --git a/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemDaoImpl.java b/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemDaoImpl.java index 88e00a15629..201197c93f2 100644 --- a/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemDaoImpl.java +++ b/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemDaoImpl.java @@ -93,7 +93,7 @@ public class NetworkACLItemDaoImpl extends GenericDaoBase