Repository: cloudstack
Updated Branches:
  refs/heads/4.5 000f8b163 -> 0d6f69b53


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/0d6f69b5
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0d6f69b5
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0d6f69b5

Branch: refs/heads/4.5
Commit: 0d6f69b536dc04e154678e5198cfd9c71097656e
Parents: 000f8b1
Author: Min Chen <[email protected]>
Authored: Thu Oct 23 14:08:49 2014 -0700
Committer: Min Chen <[email protected]>
Committed: Thu Oct 23 14:38:56 2014 -0700

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


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d6f69b5/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 0eafe13..ec4aa1d 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -629,6 +629,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