Revert "bug 8327: successive removeFromLoadBalancerRule(s) renders LB rule dysfunctional"

This reverts commit 368289aa12.
This commit is contained in:
Murali Reddy 2011-02-03 20:40:38 -08:00
parent 3cc5ce8642
commit ee1c53ecf3
1 changed files with 12 additions and 48 deletions

View File

@ -113,7 +113,6 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager,
public boolean assignToLoadBalancer(long loadBalancerId, List<Long> instanceIds) {
UserContext ctx = UserContext.current();
Account caller = ctx.getCaller();
LoadBalancerVO loadBalancerLock = null;
LoadBalancerVO loadBalancer = _lbDao.findById(loadBalancerId);
if (loadBalancer == null) {
@ -164,33 +163,22 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager,
vmsToAdd.add(vm);
}
Transaction txn = Transaction.currentTxn();
txn.start();
for (UserVm vm : vmsToAdd) {
LoadBalancerVMMapVO map = new LoadBalancerVMMapVO(loadBalancer.getId(), vm.getId(), false);
map = _lb2VmMapDao.persist(map);
}
txn.commit();
try {
loadBalancerLock = _lbDao.acquireInLockTable(loadBalancerId);
if(loadBalancerLock == null)
{
s_logger.warn("Failed to acquire lock to assign VM to load balance rule id " + loadBalancerId);
return false;
}
Transaction txn = Transaction.currentTxn();
txn.start();
for (UserVm vm : vmsToAdd) {
LoadBalancerVMMapVO map = new LoadBalancerVMMapVO(loadBalancer.getId(), vm.getId(), false);
map = _lb2VmMapDao.persist(map);
}
txn.commit();
loadBalancer.setState(FirewallRule.State.Add);
_lbDao.persist(loadBalancer);
applyLoadBalancerConfig(loadBalancerId);
} catch (ResourceUnavailableException e) {
s_logger.warn("Unable to apply the load balancer config because resource is unavaliable.", e);
return false;
} finally {
if (loadBalancerLock != null) {
_lbDao.releaseFromLockTable(loadBalancerId);
}
}
return true;
@ -200,7 +188,6 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager,
@Override @ActionEvent (eventType=EventTypes.EVENT_REMOVE_FROM_LOAD_BALANCER_RULE, eventDescription="removing from load balancer", async=true)
public boolean removeFromLoadBalancer(long loadBalancerId, List<Long> instanceIds) {
UserContext caller = UserContext.current();
LoadBalancerVO loadBalancerLock = null;
LoadBalancerVO loadBalancer = _lbDao.findById(Long.valueOf(loadBalancerId));
if (loadBalancer == null) {
@ -208,15 +195,8 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager,
}
_accountMgr.checkAccess(caller.getCaller(), loadBalancer);
try {
loadBalancerLock = _lbDao.acquireInLockTable(loadBalancerId);
if (loadBalancerLock == null)
{
s_logger.warn("Failed to acquire lock to delete load balance rule id " + loadBalancerId);
return false;
}
loadBalancer.setState(FirewallRule.State.Add);
_lbDao.persist(loadBalancer);
@ -238,10 +218,6 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager,
} catch (ResourceUnavailableException e) {
s_logger.warn("Unable to apply the load balancer config because resource is unavaliable.", e);
return false;
} finally {
if (loadBalancerLock != null) {
_lbDao.releaseFromLockTable(loadBalancerId);
}
}
return true;
@ -288,8 +264,7 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager,
@Override @ActionEvent (eventType=EventTypes.EVENT_LOAD_BALANCER_DELETE, eventDescription="deleting load balancer", async=true)
public boolean deleteLoadBalancerRule(long loadBalancerId, boolean apply) {
UserContext caller = UserContext.current();
LoadBalancerVO loadBalancerLock = null;
LoadBalancerVO lb = _lbDao.findById(loadBalancerId);
if (lb == null) {
throw new InvalidParameterException("Invalid load balancer value: " + loadBalancerId);
@ -297,13 +272,6 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager,
_accountMgr.checkAccess(caller.getCaller(), lb);
loadBalancerLock = _lbDao.acquireInLockTable(loadBalancerId);
if(loadBalancerLock == null)
{
s_logger.warn("Failed to acquire lock to delete load balance rule id " + loadBalancerId);
return false;
}
lb.setState(FirewallRule.State.Revoke);
_lbDao.persist(lb);
@ -322,14 +290,10 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager,
} catch (ResourceUnavailableException e) {
s_logger.warn("Unable to apply the load balancer config because resource is unavaliable.", e);
return false;
} finally {
if (loadBalancerLock != null)
_lbDao.releaseFromLockTable(loadBalancerId);
}
}
_rulesDao.remove(lb.getId());
UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_LOAD_BALANCER_DELETE, lb.getAccountId(), 0 , lb.getId(), null);
_usageEventDao.persist(usageEvent);
s_logger.debug("Load balancer with id " + lb.getId() + " is removed successfully");