From 16ab5ce76c68c2a6c813daec9cd2c90d4c5eb8c6 Mon Sep 17 00:00:00 2001 From: Kishan Kavala Date: Thu, 10 Apr 2014 14:41:52 +0530 Subject: [PATCH] CLOUDSTACK-6374: Remove entries from lb vm map when lb rule apply fails --- .../lb/LoadBalancingRulesManagerImpl.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 63912b37538..91b6aa4c486 100755 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -1095,7 +1095,10 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements applyLoadBalancerConfig(loadBalancerId); success = true; } catch (ResourceUnavailableException e) { - if (isRollBackAllowedForProvider(loadBalancer)) { + s_logger.warn("Unable to apply the load balancer config because resource is unavaliable.", e); + success = false; + } finally { + if (!success) { final List vmInstanceIds = new ArrayList(); Transaction.execute(new TransactionCallbackNoReturn() { @Override @@ -1111,16 +1114,14 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements } loadBalancer.setState(backupState); _lbDao.persist(loadBalancer); + CloudRuntimeException ex = new CloudRuntimeException("Failed to add specified loadbalancerruleid for vms " + + instanceIds); + ex.addProxyObject(loadBalancer.getUuid(), "loadBalancerId"); + // TBD: Also pack in the instanceIds in the exception using the + // right VO object or table name. + throw ex; } - s_logger.warn("Unable to apply the load balancer config because resource is unavaliable.", e); - } - if (!success) { - CloudRuntimeException ex = new CloudRuntimeException("Failed to add specified loadbalancerruleid for vms " + instanceIds); - ex.addProxyObject(loadBalancer.getUuid(), "loadBalancerId"); - // TBD: Also pack in the instanceIds in the exception using the - // right VO object or table name. - throw ex; } return success;