diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 6fdbf94bf33..2d65531f7d7 100644 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -1754,6 +1754,11 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag s_logger.debug("Changing active number of nics for network id=" + networkId + " on " + count); _networksDao.changeActiveNicsBy(networkId, count); } + + if (nic.getVmType() == VirtualMachine.Type.User || (nic.getVmType() == VirtualMachine.Type.DomainRouter && getNetwork(networkId).getTrafficType() == TrafficType.Guest)) { + _networksDao.setCheckForGc(networkId); + } + txn.commit(); } diff --git a/server/src/com/cloud/network/dao/NetworkDao.java b/server/src/com/cloud/network/dao/NetworkDao.java index 28e0f103ace..9990d350a83 100644 --- a/server/src/com/cloud/network/dao/NetworkDao.java +++ b/server/src/com/cloud/network/dao/NetworkDao.java @@ -92,4 +92,6 @@ public interface NetworkDao extends GenericDao { List listByZoneAndTrafficType(long zoneId, TrafficType trafficType); + void setCheckForGc(long networkId); + } diff --git a/server/src/com/cloud/network/dao/NetworkDaoImpl.java b/server/src/com/cloud/network/dao/NetworkDaoImpl.java index 00f12634abb..fac6128d7c8 100644 --- a/server/src/com/cloud/network/dao/NetworkDaoImpl.java +++ b/server/src/com/cloud/network/dao/NetworkDaoImpl.java @@ -311,6 +311,11 @@ public class NetworkDaoImpl extends GenericDaoBase implements N public void clearCheckForGc(long networkId) { _opDao.clearCheckForGc(networkId); } + + @Override + public void setCheckForGc(long networkId) { + _opDao.setCheckForGc(networkId); + } @Override public List listByOwner(long ownerId) { diff --git a/server/src/com/cloud/network/dao/NetworkOpDaoImpl.java b/server/src/com/cloud/network/dao/NetworkOpDaoImpl.java index b6626c64942..f238fca0317 100644 --- a/server/src/com/cloud/network/dao/NetworkOpDaoImpl.java +++ b/server/src/com/cloud/network/dao/NetworkOpDaoImpl.java @@ -75,17 +75,23 @@ public class NetworkOpDaoImpl extends GenericDaoBase implemen } public void changeActiveNicsBy(long networkId, int count) { + SearchCriteria sc = AllFieldsSearch.create(); sc.setParameters("network", networkId); - + NetworkOpVO vo = createForUpdate(); - vo.setCheckForGc(true); UpdateBuilder builder = getUpdateBuilder(vo); builder.incr(_activeNicsAttribute, count); update(builder, sc, null); } + public void setCheckForGc(long networkId) { + NetworkOpVO vo = createForUpdate(); + vo.setCheckForGc(true); + update(networkId, vo); + } + public void clearCheckForGc(long networkId) { NetworkOpVO vo = createForUpdate(); vo.setCheckForGc(false);