Repository: cloudstack
Updated Branches:
  refs/heads/master fed5422c1 -> 94969b065


CLOUDSTACK-7778: Start VM checkWorkItem loop should also check VM DB state 
before going into idle waiting to exit faster.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/94969b06
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/94969b06
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/94969b06

Branch: refs/heads/master
Commit: 94969b06544b785e5f765f0f8810bfef5c8890b6
Parents: fed5422
Author: Min Chen <[email protected]>
Authored: Thu Oct 23 14:08:49 2014 -0700
Committer: Min Chen <[email protected]>
Committed: Thu Oct 23 14:28:23 2014 -0700

----------------------------------------------------------------------
 .../src/com/cloud/vm/VirtualMachineManagerImpl.java         | 9 +++++++++
 1 file changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/94969b06/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 b73d129..ebb030e 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -631,6 +631,15 @@ public class VirtualMachineManagerImpl extends ManagerBase 
implements VirtualMac
                 return true;
             }
 
+            // also check DB to get latest VM state to detect vm update from 
concurrent process before idle waiting to get an early exit
+            VMInstanceVO instance = _vmDao.findById(vm.getId());
+            if (instance != null && instance.getState() == State.Running) {
+                if (s_logger.isDebugEnabled()) {
+                    s_logger.debug("VM is already started in DB: " + vm);
+                }
+                return true;
+            }
+
             if (vo.getSecondsTaskIsInactive() > VmOpCancelInterval.value()) {
                 s_logger.warn("The task item for vm " + vm + " has been 
inactive for " + vo.getSecondsTaskIsInactive());
                 return false;

Reply via email to