Repository: cloudstack Updated Branches: refs/heads/master 92d9ef9c1 -> 05bec59c1
CLOUDSTACK-7683: hold a db lock during vm expunge Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/103a4dd5 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/103a4dd5 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/103a4dd5 Branch: refs/heads/master Commit: 103a4dd54d6bdf53ac9ee68f4bf4bd8279b581c7 Parents: 92d9ef9 Author: Edison Su <[email protected]> Authored: Thu Nov 6 15:22:34 2014 -0800 Committer: Edison Su <[email protected]> Committed: Thu Nov 6 15:22:34 2014 -0800 ---------------------------------------------------------------------- server/src/com/cloud/vm/UserVmManagerImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/103a4dd5/server/src/com/cloud/vm/UserVmManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 018c062..ba07211 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -1714,6 +1714,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 @@ -1750,6 +1754,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()); } }
