From 8d64e4a8e65d79a905d53669a8fcde89bcb39ac5 Mon Sep 17 00:00:00 2001 From: prachi Date: Thu, 29 Mar 2012 12:35:28 -0700 Subject: [PATCH] Bug 14536 - DB exception while trying to delete physical network Reviewed-By: Sheng Yang Changes: Added proper cleanup for virtual router elements. --- .../src/com/cloud/network/NetworkManagerImpl.java | 14 +++++++++++++- .../network/element/VirtualRouterElement.java | 3 ++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 7df6e461bdf..e33a910a9d5 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -4785,7 +4785,19 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag _dcDao.deleteVnet(physicalNetworkId); // delete service providers - _pNSPDao.deleteProviders(physicalNetworkId); + List providers = _pNSPDao.listBy(physicalNetworkId); + + for(PhysicalNetworkServiceProviderVO provider : providers){ + try { + deleteNetworkServiceProvider(provider.getId()); + }catch (ResourceUnavailableException e) { + s_logger.warn("Unable to complete destroy of the physical network provider: " + provider.getProviderName() + ", id: "+ provider.getId(), e); + return false; + } catch (ConcurrentOperationException e) { + s_logger.warn("Unable to complete destroy of the physical network provider: " + provider.getProviderName() + ", id: "+ provider.getId(), e); + return false; + } + } // delete traffic types _pNTrafficTypeDao.deleteTrafficTypes(physicalNetworkId); diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index 0b9cbd40b6c..f715764128a 100755 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -59,7 +59,6 @@ import com.cloud.network.lb.LoadBalancingRule; import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy; import com.cloud.network.lb.LoadBalancingRulesManager; import com.cloud.network.router.VirtualNetworkApplianceManager; -import com.cloud.network.router.VirtualRouter; import com.cloud.network.router.VirtualRouter.Role; import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.LbStickinessMethod; @@ -672,6 +671,8 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl for (DomainRouterVO router : routers) { result = result && (_routerMgr.destroyRouter(router.getId()) != null); } + _vrProviderDao.remove(elementId); + return result; }