You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2014/01/09 23:33:58 UTC
[10/13] git commit: updated refs/heads/master to 1e2e1ea
CLOUDSTACK-5767: Remove the logic of using underlying job related fields for volume specific logic.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ad6454d2
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ad6454d2
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ad6454d2
Branch: refs/heads/master
Commit: ad6454d2bfff4b517b8dfca21b02f923ac8e9a51
Parents: 69f4983
Author: Kelven Yang <ke...@gmail.com>
Authored: Fri Jan 3 13:10:17 2014 -0800
Committer: Kelven Yang <ke...@gmail.com>
Committed: Thu Jan 9 14:29:12 2014 -0800
----------------------------------------------------------------------
.../com/cloud/vm/VirtualMachineManagerImpl.java | 134 +++++++++----------
.../com/cloud/storage/VolumeApiServiceImpl.java | 67 ++++------
.../vm/snapshot/VMSnapshotManagerImpl.java | 50 +++----
3 files changed, 109 insertions(+), 142 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ad6454d2/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
index 71952dd..9d4cb04 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -183,7 +183,7 @@ import com.cloud.utils.db.DB;
import com.cloud.utils.db.EntityManager;
import com.cloud.utils.db.GlobalLock;
import com.cloud.utils.db.Transaction;
-import com.cloud.utils.db.TransactionCallbackNoReturn;
+import com.cloud.utils.db.TransactionCallback;
import com.cloud.utils.db.TransactionCallbackWithException;
import com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn;
import com.cloud.utils.db.TransactionLegacy;
@@ -4138,9 +4138,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
VmWorkJobVO workJob = null;
_vmDao.lockRow(vm.getId(), true);
@@ -4171,16 +4171,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmStateSyncOutcome((VmWorkJobVO)result[0],
VirtualMachine.PowerState.PowerOn, vm.getId(), null);
}
@@ -4191,9 +4189,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
_vmDao.lockRow(vm.getId(), true);
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
@@ -4223,15 +4221,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmStateSyncOutcome((VmWorkJobVO)result[0],
VirtualMachine.PowerState.PowerOff, vm.getId(), null);
}
@@ -4244,9 +4241,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
_vmDao.lockRow(vm.getId(), true);
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
@@ -4276,15 +4273,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVirtualMachineOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmJobVirtualMachineOutcome((VmWorkJobVO)result[0],
vm.getId());
}
@@ -4295,10 +4291,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
+ public Object[] doInTransaction(TransactionStatus status) {
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
VirtualMachine.Type.Instance, vm.getId(),
@@ -4326,15 +4321,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmStateSyncOutcome((VmWorkJobVO)result[0],
VirtualMachine.PowerState.PowerOn, vm.getId(), vm.getPowerHostId());
}
@@ -4348,9 +4342,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
_vmDao.lockRow(vm.getId(), true);
@@ -4381,15 +4375,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmStateSyncOutcome((VmWorkJobVO)result[0],
VirtualMachine.PowerState.PowerOn, vm.getId(), destHostId);
}
@@ -4402,10 +4395,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
+ public Object[] doInTransaction(TransactionStatus status) {
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
VirtualMachine.Type.Instance, vm.getId(),
@@ -4434,15 +4426,15 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVirtualMachineOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
+ return new VmJobVirtualMachineOutcome((VmWorkJobVO)result[0], vm.getId());
}
public Outcome<VirtualMachine> migrateVmStorageThroughJobQueue(
@@ -4454,10 +4446,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
+ public Object[] doInTransaction(TransactionStatus status) {
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
VirtualMachine.Type.Instance, vm.getId(),
@@ -4486,15 +4477,15 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVirtualMachineOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
+ return new VmJobVirtualMachineOutcome((VmWorkJobVO)result[0], vm.getId());
}
public Outcome<VirtualMachine> addVmToNetworkThroughJobQueue(
@@ -4504,10 +4495,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final User user = context.getCallingUser();
final Account account = context.getCallingAccount();
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
+ public Object[] doInTransaction(TransactionStatus status) {
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
VirtualMachine.Type.Instance, vm.getId(),
@@ -4536,15 +4526,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVirtualMachineOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
+ return new VmJobVirtualMachineOutcome((VmWorkJobVO)result[0], vm.getId());
}
public Outcome<VirtualMachine> removeNicFromVmThroughJobQueue(
@@ -4554,10 +4543,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final User user = context.getCallingUser();
final Account account = context.getCallingAccount();
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
+ public Object[] doInTransaction(TransactionStatus status) {
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
VirtualMachine.Type.Instance, vm.getId(),
@@ -4586,15 +4574,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVirtualMachineOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
+ return new VmJobVirtualMachineOutcome((VmWorkJobVO)result[0], vm.getId());
}
public Outcome<VirtualMachine> removeVmFromNetworkThroughJobQueue(
@@ -4604,10 +4591,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final User user = context.getCallingUser();
final Account account = context.getCallingAccount();
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
+ public Object[] doInTransaction(TransactionStatus status) {
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
VirtualMachine.Type.Instance, vm.getId(),
@@ -4636,15 +4622,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVirtualMachineOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
+ return new VmJobVirtualMachineOutcome((VmWorkJobVO)result[0], vm.getId());
}
public Outcome<VirtualMachine> reconfigureVmThroughJobQueue(
@@ -4656,10 +4641,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
+ public Object[] doInTransaction(TransactionStatus status) {
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
VirtualMachine.Type.Instance, vm.getId(),
@@ -4688,12 +4672,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
}
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- return new VmJobVirtualMachineOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
+ final long jobId = (Long)result[1];
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
+ return new VmJobVirtualMachineOutcome((VmWorkJobVO)result[0], vm.getId());
}
private Pair<JobInfo.Status, String> orchestrateStart(VmWorkStart work) throws Exception {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ad6454d2/server/src/com/cloud/storage/VolumeApiServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
index f453289..0200233 100644
--- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
@@ -28,7 +28,6 @@ import javax.inject.Inject;
import org.apache.log4j.Logger;
-import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd;
import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd;
import org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd;
@@ -150,7 +149,6 @@ import com.cloud.utils.db.DB;
import com.cloud.utils.db.EntityManager;
import com.cloud.utils.db.Transaction;
import com.cloud.utils.db.TransactionCallback;
-import com.cloud.utils.db.TransactionCallbackNoReturn;
import com.cloud.utils.db.TransactionStatus;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.fsm.NoTransitionException;
@@ -1282,7 +1280,6 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
}
_asyncMgr.updateAsyncJobAttachment(job.getId(), "volume", volumeId);
- _asyncMgr.updateAsyncJobStatus(job.getId(), BaseCmd.PROGRESS_INSTANCE_CREATED, Long.toString(volumeId));
}
VolumeVO newVol = _volumeDao.findById(volumeOnPrimaryStorage.getId());
@@ -1403,7 +1400,6 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
}
_asyncMgr.updateAsyncJobAttachment(job.getId(), "volume", volumeId);
- _asyncMgr.updateAsyncJobStatus(job.getId(), BaseCmd.PROGRESS_INSTANCE_CREATED, volumeId.toString());
}
AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
@@ -2135,9 +2131,9 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
final VMInstanceVO vm = _vmInstanceDao.findById(vmId);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
VmWorkJobVO workJob = null;
_vmInstanceDao.lockRow(vm.getId(), true);
@@ -2159,16 +2155,17 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ AsyncJobVO jobVo = _jobMgr.getAsyncJob(workJob.getId());
+ s_logger.debug("New job " + workJob.getId() + ", result field: " + jobVo.getResult());
+
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVolumeOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmJobVolumeOutcome((VmWorkJobVO)result[0],
volumeId);
}
@@ -2180,9 +2177,9 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
final VMInstanceVO vm = _vmInstanceDao.findById(vmId);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
VmWorkJobVO workJob = null;
_vmInstanceDao.lockRow(vm.getId(), true);
@@ -2203,16 +2200,14 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVolumeOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmJobVolumeOutcome((VmWorkJobVO)result[0],
volumeId);
}
@@ -2225,9 +2220,9 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
final VMInstanceVO vm = _vmInstanceDao.findById(vmId);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
VmWorkJobVO workJob = null;
_vmInstanceDao.lockRow(vm.getId(), true);
@@ -2249,16 +2244,14 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVolumeOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmJobVolumeOutcome((VmWorkJobVO)result[0],
volumeId);
}
@@ -2271,9 +2264,9 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
final VMInstanceVO vm = _vmInstanceDao.findById(vmId);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
VmWorkJobVO workJob = null;
_vmInstanceDao.lockRow(vm.getId(), true);
@@ -2295,16 +2288,14 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVolumeOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmJobVolumeOutcome((VmWorkJobVO)result[0],
volumeId);
}
@@ -2317,9 +2308,9 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
final VMInstanceVO vm = _vmInstanceDao.findById(vmId);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
VmWorkJobVO workJob = null;
_vmInstanceDao.lockRow(vm.getId(), true);
@@ -2342,16 +2333,14 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobSnapshotOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmJobSnapshotOutcome((VmWorkJobVO)result[0],
snapshotId);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ad6454d2/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 f7c1120..40476d0 100644
--- a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
+++ b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
@@ -78,7 +78,7 @@ 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.TransactionCallbackNoReturn;
+import com.cloud.utils.db.TransactionCallback;
import com.cloud.utils.db.TransactionStatus;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.vm.UserVmVO;
@@ -814,9 +814,9 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
final VMInstanceVO vm = _vmInstanceDao.findById(vmId);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
VmWorkJobVO workJob = null;
_vmInstanceDao.lockRow(vm.getId(), true);
@@ -838,16 +838,14 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVMSnapshotOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmJobVMSnapshotOutcome((VmWorkJobVO)result[0],
vmSnapshotId);
}
@@ -859,9 +857,9 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
final VMInstanceVO vm = _vmInstanceDao.findById(vmId);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
VmWorkJobVO workJob = null;
_vmInstanceDao.lockRow(vm.getId(), true);
@@ -883,16 +881,14 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVMSnapshotOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmJobVMSnapshotOutcome((VmWorkJobVO)result[0],
vmSnapshotId);
}
@@ -904,9 +900,9 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
final VMInstanceVO vm = _vmInstanceDao.findById(vmId);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
VmWorkJobVO workJob = null;
_vmInstanceDao.lockRow(vm.getId(), true);
@@ -928,16 +924,14 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVMSnapshotOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmJobVMSnapshotOutcome((VmWorkJobVO)result[0],
vmSnapshotId);
}
@@ -949,9 +943,9 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
final VMInstanceVO vm = _vmInstanceDao.findById(vmId);
- Transaction.execute(new TransactionCallbackNoReturn() {
+ Object[] result = Transaction.execute(new TransactionCallback<Object[]>() {
@Override
- public void doInTransactionWithoutResult(TransactionStatus status) {
+ public Object[] doInTransaction(TransactionStatus status) {
VmWorkJobVO workJob = null;
_vmInstanceDao.lockRow(vm.getId(), true);
@@ -973,16 +967,14 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
_jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
+ return new Object[] {workJob, new Long(workJob.getId())};
}
});
- final long jobId = (Long)context.getContextParameter("jobId");
+ final long jobId = (Long)result[1];
AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
- return new VmJobVirtualMachineOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
+ return new VmJobVirtualMachineOutcome((VmWorkJobVO)result[0],
vmId);
}