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