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/06/12 21:12:19 UTC
git commit: updated refs/heads/vmsync to 35ea8e1
Updated Branches:
refs/heads/vmsync 03a9445fd -> 35ea8e149
Fix errors in bringing up user VM under new VMsync framework
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/35ea8e14
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/35ea8e14
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/35ea8e14
Branch: refs/heads/vmsync
Commit: 35ea8e149d57308d86e8fa50e58171536616620d
Parents: 03a9445
Author: Kelven Yang <ke...@gmail.com>
Authored: Wed Jun 12 12:05:26 2013 -0700
Committer: Kelven Yang <ke...@gmail.com>
Committed: Wed Jun 12 12:05:26 2013 -0700
----------------------------------------------------------------------
.../schema/src/com/cloud/vm/dao/NicDaoImpl.java | 1 +
.../framework/jobs/impl/AsyncJobMonitor.java | 6 +++++
.../com/cloud/async/AsyncJobManagerImpl.java | 14 ++++++++----
server/src/com/cloud/vm/VmWorkStart.java | 24 ++++++++++++--------
.../vm/VmWorkMockVirtualMachineManagerImpl.java | 13 -----------
5 files changed, 30 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/35ea8e14/engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java
index 420643f..48697d6 100644
--- a/engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java
@@ -53,6 +53,7 @@ public class NicDaoImpl extends GenericDaoBase<NicVO, Long> implements NicDao {
AllFieldsSearch.and("broadcastUri", AllFieldsSearch.entity().getBroadcastUri(), Op.EQ);
AllFieldsSearch.and("secondaryip", AllFieldsSearch.entity().getSecondaryIp(), Op.EQ);
AllFieldsSearch.and("nicid", AllFieldsSearch.entity().getId(), Op.EQ);
+ AllFieldsSearch.and("strategy", AllFieldsSearch.entity().getReservationStrategy(), Op.EQ);
AllFieldsSearch.done();
IpSearch = createSearchBuilder(String.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/35ea8e14/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java
----------------------------------------------------------------------
diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java
index 25f9583..ea7af83 100644
--- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java
+++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java
@@ -141,6 +141,12 @@ public class AsyncJobMonitor extends ManagerBase {
}
}
+ public boolean isJobActive(long jobId) {
+ synchronized(this) {
+ return _activeTasks.get(jobId) != null;
+ }
+ }
+
public int getActivePoolThreads() {
return _activePoolThreads;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/35ea8e14/server/src/com/cloud/async/AsyncJobManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/async/AsyncJobManagerImpl.java b/server/src/com/cloud/async/AsyncJobManagerImpl.java
index 359d47b..81350c4 100644
--- a/server/src/com/cloud/async/AsyncJobManagerImpl.java
+++ b/server/src/com/cloud/async/AsyncJobManagerImpl.java
@@ -535,13 +535,17 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager,
}
if((getAndResetPendingSignals(job) & AsyncJobConstants.SIGNAL_MASK_WAKEUP) != 0) {
- AsyncJobDispatcher jobDispatcher = getWakeupDispatcher(job);
- if(jobDispatcher != null) {
- jobDispatcher.runJob(job);
- } else {
- s_logger.error("Unable to find a wakeup dispatcher from the joined job. job-" + job.getId());
+ if(!_jobMonitor.isJobActive(job.getId())) {
+ AsyncJobDispatcher jobDispatcher = getWakeupDispatcher(job);
+ if(jobDispatcher != null) {
+ jobDispatcher.runJob(job);
+ } else {
+ s_logger.error("Unable to find a wakeup dispatcher from the joined job. job-" + job.getId());
+ }
}
} else {
+ assert(_jobMonitor.isJobActive(job.getId()));
+
AsyncJobDispatcher jobDispatcher = getDispatcher(job.getDispatcher());
if(jobDispatcher != null) {
jobDispatcher.runJob(job);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/35ea8e14/server/src/com/cloud/vm/VmWorkStart.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VmWorkStart.java b/server/src/com/cloud/vm/VmWorkStart.java
index fbc0a15..107009e 100644
--- a/server/src/com/cloud/vm/VmWorkStart.java
+++ b/server/src/com/cloud/vm/VmWorkStart.java
@@ -51,19 +51,23 @@ public class VmWorkStart extends VmWork {
}
public DeploymentPlan getPlan() {
- // this is ugly, to work with legacy code, we need to re-construct the DeploymentPlan hard-codely
- // this has to be refactored together with migrating legacy code into the new way
- ReservationContext context = null;
- if(reservationId != null) {
- Journal journal = new Journal.LogJournal("VmWorkStart", s_logger);
- context = new ReservationContextImpl(reservationId, journal, CallContext.current().getCallingUser(), CallContext.current().getCallingAccount());
+ if(podId != null || clusterId != null || hostId != null || poolId != null || physicalNetworkId != null) {
+ // this is ugly, to work with legacy code, we need to re-construct the DeploymentPlan hard-codely
+ // this has to be refactored together with migrating legacy code into the new way
+ ReservationContext context = null;
+ if(reservationId != null) {
+ Journal journal = new Journal.LogJournal("VmWorkStart", s_logger);
+ context = new ReservationContextImpl(reservationId, journal, CallContext.current().getCallingUser(), CallContext.current().getCallingAccount());
+ }
+
+ DeploymentPlan plan = new DataCenterDeployment(
+ dcId, podId, clusterId, hostId, poolId, physicalNetworkId,
+ context);
+ return plan;
}
- DeploymentPlan plan = new DataCenterDeployment(
- dcId, podId, clusterId, hostId, poolId, physicalNetworkId,
- context);
- return plan;
+ return null;
}
public void setPlan(DeploymentPlan plan) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/35ea8e14/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java b/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
index 77b9268..642dfc1 100644
--- a/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
+++ b/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
@@ -17,7 +17,6 @@
package com.cloud.vm;
import java.net.URI;
-import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -166,18 +165,6 @@ public class VmWorkMockVirtualMachineManagerImpl implements VirtualMachineManage
}
@Override
- public Collection<VirtualMachineGuru> getRegisteredGurus() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public VirtualMachineGuru getVmGuru(VirtualMachine vm) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
public boolean stateTransitTo(VMInstanceVO vm, Event e, Long hostId)
throws NoTransitionException {
// TODO Auto-generated method stub