CLOUDSTACK-7683: hold a db lock during vm expunge

This commit is contained in:
Edison Su 2014-11-06 15:22:34 -08:00
parent 885bba926c
commit 812b0122e2

View File

@ -1703,6 +1703,10 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
@Override
public boolean expunge(UserVmVO vm, long callerUserId, Account caller) {
vm = _vmDao.acquireInLockTable(vm.getId());
if (vm == null) {
return false;
}
try {
List<VolumeVO> rootVol = _volsDao.findByInstanceAndType(vm.getId(), Volume.Type.ROOT);
// expunge the vm
@ -1739,6 +1743,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
} catch (ConcurrentOperationException e) {
s_logger.warn("Concurrent operations on expunging " + vm, e);
return false;
} finally {
_vmDao.releaseFromLockTable(vm.getId());
}
}