From 94969b06544b785e5f765f0f8810bfef5c8890b6 Mon Sep 17 00:00:00 2001 From: Min Chen Date: Thu, 23 Oct 2014 14:08:49 -0700 Subject: [PATCH] CLOUDSTACK-7778: Start VM checkWorkItem loop should also check VM DB state before going into idle waiting to exit faster. --- .../src/com/cloud/vm/VirtualMachineManagerImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java index b73d1296cdc..ebb030e5233 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;