Return-Path: X-Original-To: apmail-cloudstack-commits-archive@www.apache.org Delivered-To: apmail-cloudstack-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DC331109F8 for ; Mon, 3 Nov 2014 19:13:04 +0000 (UTC) Received: (qmail 71920 invoked by uid 500); 3 Nov 2014 19:13:04 -0000 Delivered-To: apmail-cloudstack-commits-archive@cloudstack.apache.org Received: (qmail 71884 invoked by uid 500); 3 Nov 2014 19:13:04 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 71875 invoked by uid 99); 3 Nov 2014 19:13:04 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Nov 2014 19:13:04 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 6F10899C2F6; Mon, 3 Nov 2014 19:13:04 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: mchen@apache.org To: commits@cloudstack.apache.org Date: Mon, 03 Nov 2014 19:13:04 -0000 Message-Id: <0e5c2fce87104b49b8d9044b948d226c@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/2] CLOUDSTACK-7833: VM Async work jobs log "Was unable to find lock for the key vm_instance" errors as warning Repository: cloudstack Updated Branches: refs/heads/master ffaabdc13 -> 684889f0b http://git-wip-us.apache.org/repos/asf/cloudstack/blob/684889f0/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java index c30dc29..6590a74 100644 --- a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java +++ b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java @@ -82,9 +82,6 @@ import com.cloud.utils.db.EntityManager; import com.cloud.utils.db.Filter; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; -import com.cloud.utils.db.Transaction; -import com.cloud.utils.db.TransactionCallback; -import com.cloud.utils.db.TransactionStatus; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; @@ -865,44 +862,28 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana final VMInstanceVO vm = _vmInstanceDao.findById(vmId); - Object[] result = Transaction.execute(new TransactionCallback() { - @Override - public Object[] doInTransaction(TransactionStatus status) { - VmWorkJobVO workJob = null; + VmWorkJobVO workJob = new VmWorkJobVO(context.getContextId()); - _vmInstanceDao.lockInLockTable(String.valueOf(vm.getId()), Integer.MAX_VALUE); - try { - workJob = new VmWorkJobVO(context.getContextId()); - - workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER); - workJob.setCmd(VmWorkCreateVMSnapshot.class.getName()); + workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER); + workJob.setCmd(VmWorkCreateVMSnapshot.class.getName()); - workJob.setAccountId(callingAccount.getId()); - workJob.setUserId(callingUser.getId()); - workJob.setStep(VmWorkJobVO.Step.Starting); - workJob.setVmType(VirtualMachine.Type.Instance); - workJob.setVmInstanceId(vm.getId()); - workJob.setRelated(AsyncJobExecutionContext.getOriginJobId()); - - // save work context info (there are some duplications) - VmWorkCreateVMSnapshot workInfo = new VmWorkCreateVMSnapshot(callingUser.getId(), callingAccount.getId(), vm.getId(), - VMSnapshotManagerImpl.VM_WORK_JOB_HANDLER, vmSnapshotId, quiesceVm); - workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo)); + workJob.setAccountId(callingAccount.getId()); + workJob.setUserId(callingUser.getId()); + workJob.setStep(VmWorkJobVO.Step.Starting); + workJob.setVmType(VirtualMachine.Type.Instance); + workJob.setVmInstanceId(vm.getId()); + workJob.setRelated(AsyncJobExecutionContext.getOriginJobId()); - _jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId()); + // save work context info (there are some duplications) + VmWorkCreateVMSnapshot workInfo = new VmWorkCreateVMSnapshot(callingUser.getId(), callingAccount.getId(), vm.getId(), + VMSnapshotManagerImpl.VM_WORK_JOB_HANDLER, vmSnapshotId, quiesceVm); + workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo)); - return new Object[] {workJob, new Long(workJob.getId())}; - } finally { - _vmInstanceDao.unlockFromLockTable(String.valueOf(vm.getId())); - } - } - }); + _jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId()); - final long jobId = (Long)result[1]; - AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId); + AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(workJob.getId()); - return new VmJobVMSnapshotOutcome((VmWorkJobVO)result[0], - vmSnapshotId); + return new VmJobVMSnapshotOutcome(workJob,vmSnapshotId); } public Outcome deleteVMSnapshotThroughJobQueue(final Long vmId, final Long vmSnapshotId) { @@ -913,44 +894,28 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana final VMInstanceVO vm = _vmInstanceDao.findById(vmId); - Object[] result = Transaction.execute(new TransactionCallback() { - @Override - public Object[] doInTransaction(TransactionStatus status) { - VmWorkJobVO workJob = null; + VmWorkJobVO workJob = new VmWorkJobVO(context.getContextId()); - _vmInstanceDao.lockInLockTable(String.valueOf(vm.getId()), Integer.MAX_VALUE); - try { - workJob = new VmWorkJobVO(context.getContextId()); - - workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER); - workJob.setCmd(VmWorkDeleteVMSnapshot.class.getName()); + workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER); + workJob.setCmd(VmWorkDeleteVMSnapshot.class.getName()); - workJob.setAccountId(callingAccount.getId()); - workJob.setUserId(callingUser.getId()); - workJob.setStep(VmWorkJobVO.Step.Starting); - workJob.setVmType(VirtualMachine.Type.Instance); - workJob.setVmInstanceId(vm.getId()); - workJob.setRelated(AsyncJobExecutionContext.getOriginJobId()); - - // save work context info (there are some duplications) - VmWorkDeleteVMSnapshot workInfo = new VmWorkDeleteVMSnapshot(callingUser.getId(), callingAccount.getId(), vm.getId(), - VMSnapshotManagerImpl.VM_WORK_JOB_HANDLER, vmSnapshotId); - workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo)); + workJob.setAccountId(callingAccount.getId()); + workJob.setUserId(callingUser.getId()); + workJob.setStep(VmWorkJobVO.Step.Starting); + workJob.setVmType(VirtualMachine.Type.Instance); + workJob.setVmInstanceId(vm.getId()); + workJob.setRelated(AsyncJobExecutionContext.getOriginJobId()); - _jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId()); + // save work context info (there are some duplications) + VmWorkDeleteVMSnapshot workInfo = new VmWorkDeleteVMSnapshot(callingUser.getId(), callingAccount.getId(), vm.getId(), + VMSnapshotManagerImpl.VM_WORK_JOB_HANDLER, vmSnapshotId); + workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo)); - return new Object[] {workJob, new Long(workJob.getId())}; - } finally { - _vmInstanceDao.unlockFromLockTable(String.valueOf(vm.getId())); - } - } - }); + _jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId()); - final long jobId = (Long)result[1]; - AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId); + AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(workJob.getId()); - return new VmJobVMSnapshotOutcome((VmWorkJobVO)result[0], - vmSnapshotId); + return new VmJobVMSnapshotOutcome(workJob,vmSnapshotId); } public Outcome revertToVMSnapshotThroughJobQueue(final Long vmId, final Long vmSnapshotId) { @@ -961,44 +926,28 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana final VMInstanceVO vm = _vmInstanceDao.findById(vmId); - Object[] result = Transaction.execute(new TransactionCallback() { - @Override - public Object[] doInTransaction(TransactionStatus status) { - VmWorkJobVO workJob = null; + VmWorkJobVO workJob = new VmWorkJobVO(context.getContextId()); - _vmInstanceDao.lockInLockTable(String.valueOf(vm.getId()), Integer.MAX_VALUE); - try { - workJob = new VmWorkJobVO(context.getContextId()); - - workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER); - workJob.setCmd(VmWorkRevertToVMSnapshot.class.getName()); + workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER); + workJob.setCmd(VmWorkRevertToVMSnapshot.class.getName()); - workJob.setAccountId(callingAccount.getId()); - workJob.setUserId(callingUser.getId()); - workJob.setStep(VmWorkJobVO.Step.Starting); - workJob.setVmType(VirtualMachine.Type.Instance); - workJob.setVmInstanceId(vm.getId()); - workJob.setRelated(AsyncJobExecutionContext.getOriginJobId()); - - // save work context info (there are some duplications) - VmWorkRevertToVMSnapshot workInfo = new VmWorkRevertToVMSnapshot(callingUser.getId(), callingAccount.getId(), vm.getId(), - VMSnapshotManagerImpl.VM_WORK_JOB_HANDLER, vmSnapshotId); - workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo)); + workJob.setAccountId(callingAccount.getId()); + workJob.setUserId(callingUser.getId()); + workJob.setStep(VmWorkJobVO.Step.Starting); + workJob.setVmType(VirtualMachine.Type.Instance); + workJob.setVmInstanceId(vm.getId()); + workJob.setRelated(AsyncJobExecutionContext.getOriginJobId()); - _jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId()); + // save work context info (there are some duplications) + VmWorkRevertToVMSnapshot workInfo = new VmWorkRevertToVMSnapshot(callingUser.getId(), callingAccount.getId(), vm.getId(), + VMSnapshotManagerImpl.VM_WORK_JOB_HANDLER, vmSnapshotId); + workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo)); - return new Object[] {workJob, new Long(workJob.getId())}; - } finally { - _vmInstanceDao.unlockFromLockTable(String.valueOf(vm.getId())); - } - } - }); + _jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId()); - final long jobId = (Long)result[1]; - AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId); + AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(workJob.getId()); - return new VmJobVMSnapshotOutcome((VmWorkJobVO)result[0], - vmSnapshotId); + return new VmJobVMSnapshotOutcome(workJob,vmSnapshotId); } public Outcome deleteAllVMSnapshotsThroughJobQueue(final Long vmId, final VMSnapshot.Type type) { @@ -1009,44 +958,28 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana final VMInstanceVO vm = _vmInstanceDao.findById(vmId); - Object[] result = Transaction.execute(new TransactionCallback() { - @Override - public Object[] doInTransaction(TransactionStatus status) { - VmWorkJobVO workJob = null; + VmWorkJobVO workJob = new VmWorkJobVO(context.getContextId()); - _vmInstanceDao.lockInLockTable(String.valueOf(vm.getId()), Integer.MAX_VALUE); - try { - workJob = new VmWorkJobVO(context.getContextId()); - - workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER); - workJob.setCmd(VmWorkDeleteAllVMSnapshots.class.getName()); + workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER); + workJob.setCmd(VmWorkDeleteAllVMSnapshots.class.getName()); - workJob.setAccountId(callingAccount.getId()); - workJob.setUserId(callingUser.getId()); - workJob.setStep(VmWorkJobVO.Step.Starting); - workJob.setVmType(VirtualMachine.Type.Instance); - workJob.setVmInstanceId(vm.getId()); - workJob.setRelated(AsyncJobExecutionContext.getOriginJobId()); - - // save work context info (there are some duplications) - VmWorkDeleteAllVMSnapshots workInfo = new VmWorkDeleteAllVMSnapshots(callingUser.getId(), callingAccount.getId(), vm.getId(), - VMSnapshotManagerImpl.VM_WORK_JOB_HANDLER, type); - workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo)); + workJob.setAccountId(callingAccount.getId()); + workJob.setUserId(callingUser.getId()); + workJob.setStep(VmWorkJobVO.Step.Starting); + workJob.setVmType(VirtualMachine.Type.Instance); + workJob.setVmInstanceId(vm.getId()); + workJob.setRelated(AsyncJobExecutionContext.getOriginJobId()); - _jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId()); + // save work context info (there are some duplications) + VmWorkDeleteAllVMSnapshots workInfo = new VmWorkDeleteAllVMSnapshots(callingUser.getId(), callingAccount.getId(), vm.getId(), + VMSnapshotManagerImpl.VM_WORK_JOB_HANDLER, type); + workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo)); - return new Object[] {workJob, new Long(workJob.getId())}; - } finally { - _vmInstanceDao.unlockFromLockTable(String.valueOf(vm.getId())); - } - } - }); + _jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId()); - final long jobId = (Long)result[1]; - AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId); + AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(workJob.getId()); - return new VmJobVirtualMachineOutcome((VmWorkJobVO)result[0], - vmId); + return new VmJobVirtualMachineOutcome(workJob,vmId); } @ReflectionUse