From bbf20ac12550c7d4da9b2a64f5b08ad9ffec7c71 Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Thu, 11 Aug 2011 14:28:32 -0700 Subject: [PATCH] bug 11019: Let VM sync to coordinate with possible VM-relocation under VMware when VM is in starting time --- .../com/cloud/vm/VirtualMachineManagerImpl.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 0e70a7c2e5b..79a6161a943 100755 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -1554,11 +1554,17 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene } if(trackExternalChange) { - if(vm.getHostId() == null || hostId != vm.getHostId()) { - try { - stateTransitTo(vm, VirtualMachine.Event.AgentReportMigrated, hostId); - } catch (NoTransitionException e) { - s_logger.warn(e.getMessage()); + if(serverState == State.Starting) { + if(vm.getHostId() != null && vm.getHostId() != hostId) { + s_logger.info("CloudStack is starting VM on host " + vm.getHostId() + ", but status report comes from a different host " + hostId + ", skip status sync for vm: " + vm.getInstanceName()); + return null; + } + } + + if(vm.getHostId() == null || hostId != vm.getHostId()) { + try { + stateTransitTo(vm, VirtualMachine.Event.AgentReportMigrated, hostId); + } catch (NoTransitionException e) { } } }