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 2013/12/07 00:49:03 UTC
git commit: updated refs/heads/4.3 to d931718
Updated Branches:
refs/heads/4.3 3f526fb05 -> d931718ab
CLOUDSTACK-669: put system vm work under new vmsync model
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/d931718a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/d931718a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/d931718a
Branch: refs/heads/4.3
Commit: d931718ab2d5149f7bbe61e137667d53ff832ca9
Parents: 3f526fb
Author: Kelven Yang <ke...@gmail.com>
Authored: Fri Dec 6 15:36:54 2013 -0800
Committer: Kelven Yang <ke...@gmail.com>
Committed: Fri Dec 6 15:48:10 2013 -0800
----------------------------------------------------------------------
...spring-engine-orchestration-core-context.xml | 14 +++++++--
.../com/cloud/vm/VirtualMachineManagerImpl.java | 30 ++++++++++----------
.../spring-server-core-managers-context.xml | 4 ++-
.../storage/snapshot/SnapshotSchedulerImpl.java | 12 ++++++--
.../src/com/cloud/vm/SystemVmLoadScanner.java | 14 +++++++--
5 files changed, 52 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d931718a/engine/orchestration/resources/META-INF/cloudstack/core/spring-engine-orchestration-core-context.xml
----------------------------------------------------------------------
diff --git a/engine/orchestration/resources/META-INF/cloudstack/core/spring-engine-orchestration-core-context.xml b/engine/orchestration/resources/META-INF/cloudstack/core/spring-engine-orchestration-core-context.xml
index 880002c..0c76f00 100644
--- a/engine/orchestration/resources/META-INF/cloudstack/core/spring-engine-orchestration-core-context.xml
+++ b/engine/orchestration/resources/META-INF/cloudstack/core/spring-engine-orchestration-core-context.xml
@@ -20,11 +20,16 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
+ xmlns:util="http://www.springframework.org/schema/util"
+
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
+ http://www.springframework.org/schema/aop
+ http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd"
+ http://www.springframework.org/schema/context/spring-context-3.0.xsd
+ http://www.springframework.org/schema/util
+ http://www.springframework.org/schema/util/spring-util-3.0.xsd"
>
<bean id="clusterBasedAgentLoadBalancerPlanner"
@@ -68,5 +73,10 @@
<bean id="virtualMachineEntityImpl" class="org.apache.cloudstack.engine.cloud.entity.api.VirtualMachineEntityImpl" />
<bean id="virtualMachinePowerStateSyncImpl" class="com.cloud.vm.VirtualMachinePowerStateSyncImpl" />
+ <bean id= "vmWorkJobDispatcher" class="com.cloud.vm.VmWorkJobDispatcher">
+ <property name="name">
+ <util:constant static-field="com.cloud.vm.VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER"/>
+ </property>
+ </bean>
</beans>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d931718a/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 164457a..841721d 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -4122,6 +4122,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
return null;
}
+ //
+ // TODO build a common pattern to reduce code duplication in following methods
+ // no time for this at current iteration
+ //
public Outcome<VirtualMachine> startVmThroughJobQueue(final String vmUuid,
final Map<VirtualMachineProfile.Param, Object> params,
final DeploymentPlan planToDeploy) {
@@ -4166,7 +4170,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
// Transaction syntax sugar has a cost here
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
@@ -4216,7 +4220,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
@@ -4268,7 +4272,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
@@ -4318,7 +4322,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
}
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
@@ -4372,7 +4376,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
}
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
@@ -4383,10 +4387,6 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
VirtualMachine.PowerState.PowerOn, vm.getId(), destHostId);
}
- //
- // TODO build a common pattern to reduce code duplication in following methods
- // no time for this at current iteration
- //
public Outcome<VirtualMachine> migrateVmForScaleThroughJobQueue(
final String vmUuid, final long srcHostId, final DeployDestination dest, final Long newSvcOfferingId) {
@@ -4429,7 +4429,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
}
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
@@ -4481,7 +4481,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
}
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
@@ -4531,7 +4531,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
}
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
@@ -4581,7 +4581,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
}
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
@@ -4631,7 +4631,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
}
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
@@ -4683,7 +4683,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
}
context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(vm.getId()));
+ context.putContextParameter("jobId", new Long(workJob.getId()));
}
});
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d931718a/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
----------------------------------------------------------------------
diff --git a/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml b/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
index 2a080f9..bcb218a 100644
--- a/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
+++ b/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
@@ -158,7 +158,9 @@
<bean id="snapshotManagerImpl" class="com.cloud.storage.snapshot.SnapshotManagerImpl" />
- <bean id="snapshotSchedulerImpl" class="com.cloud.storage.snapshot.SnapshotSchedulerImpl" />
+ <bean id="snapshotSchedulerImpl" class="com.cloud.storage.snapshot.SnapshotSchedulerImpl" >
+ <property name="asyncJobDispatcher" ref="ApiAsyncJobDispatcher" />
+ </bean>
<bean id="storageNetworkManagerImpl" class="com.cloud.network.StorageNetworkManagerImpl" />
<bean id="taggedResourceManagerImpl" class="com.cloud.tags.TaggedResourceManagerImpl" />
<bean id="resourceMetaDataManagerImpl" class="com.cloud.metadata.ResourceMetaDataManagerImpl" />
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d931718a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
index a113558..1f1c8aa 100644
--- a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
@@ -72,8 +72,8 @@ public class SnapshotSchedulerImpl extends ManagerBase implements SnapshotSchedu
@Inject
protected AsyncJobDao _asyncJobDao;
- @Inject
protected AsyncJobDispatcher _asyncDispatcher;
+
@Inject protected SnapshotDao _snapshotDao;
@Inject protected SnapshotScheduleDao _snapshotScheduleDao;
@Inject protected SnapshotPolicyDao _snapshotPolicyDao;
@@ -86,7 +86,15 @@ public class SnapshotSchedulerImpl extends ManagerBase implements SnapshotSchedu
private Timer _testClockTimer;
private Date _currentTimestamp;
private TestClock _testTimerTask;
-
+
+ public AsyncJobDispatcher getAsyncJobDispatcher() {
+ return _asyncDispatcher;
+ }
+
+ public void setAsyncJobDispatcher(AsyncJobDispatcher dispatcher) {
+ _asyncDispatcher = dispatcher;
+ }
+
private Date getNextScheduledTime(long policyId, Date currentTimestamp) {
SnapshotPolicyVO policy = _snapshotPolicyDao.findById(policyId);
Date nextTimestamp = null;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d931718a/server/src/com/cloud/vm/SystemVmLoadScanner.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/SystemVmLoadScanner.java b/server/src/com/cloud/vm/SystemVmLoadScanner.java
index 6e55216..1141664 100644
--- a/server/src/com/cloud/vm/SystemVmLoadScanner.java
+++ b/server/src/com/cloud/vm/SystemVmLoadScanner.java
@@ -21,6 +21,8 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
+import org.apache.cloudstack.context.CallContext;
+import org.apache.cloudstack.framework.jobs.AsyncJobExecutionContext;
import org.apache.cloudstack.managed.context.ManagedContextRunnable;
import com.cloud.utils.Pair;
@@ -40,7 +42,7 @@ public class SystemVmLoadScanner<T> {
private final SystemVmLoadScanHandler<T> _scanHandler;
private final ScheduledExecutorService _capacityScanScheduler;
private final GlobalLock _capacityScanLock;
-
+
public SystemVmLoadScanner(SystemVmLoadScanHandler<T> scanHandler) {
_scanHandler = scanHandler;
_capacityScanScheduler = Executors.newScheduledThreadPool(1, new NamedThreadFactory(scanHandler.getScanHandlerName()));
@@ -67,8 +69,16 @@ public class SystemVmLoadScanner<T> {
@Override
protected void runInContext() {
- try {
+ try {
+ CallContext callContext = CallContext.current();
+ assert(callContext != null);
+
+ AsyncJobExecutionContext.registerPseudoExecutionContext(
+ callContext.getCallingAccountId(), callContext.getCallingUserId());
+
reallyRun();
+
+ AsyncJobExecutionContext.unregister();
} catch (Throwable e) {
s_logger.warn("Unexpected exception " + e.getMessage(), e);
}