From 0d612c4d85699f58b560668dc4ca6473d6c19233 Mon Sep 17 00:00:00 2001 From: edison Date: Thu, 23 Dec 2010 11:58:25 -0800 Subject: [PATCH] catch runtime exception --- server/src/com/cloud/vm/VirtualMachineManagerImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index dcbee11b561..51d189d4cad 100644 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -376,8 +376,6 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Cluster if (!stateTransitTo(vm, Event.StartRequested, null)) { throw new ConcurrentOperationException("Unable to start vm " + vm + " due to concurrent operations"); } - - VirtualMachineProfileImpl vmProfile = new VirtualMachineProfileImpl(vm, template, offering, null, params, hyperType); ExcludeList avoids = new ExcludeList(); int retry = _retry; @@ -388,6 +386,8 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Cluster stateTransitTo(vm, Event.OperationRetry, dest.getHost().getId()); } + VirtualMachineProfileImpl vmProfile = new VirtualMachineProfileImpl(vm, template, offering, null, params, hyperType); + for (DeploymentPlanner planner : _planners) { dest = planner.plan(vmProfile, plan, avoids); if (dest != null) { @@ -419,6 +419,9 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Cluster s_logger.warn("Insufficient capacity ", e); avoids.add(e); continue; + } catch (RuntimeException e) { + stateTransitTo(vm, Event.OperationFailed, dest.getHost().getId()); + return null; } vmGuru.finalizeVirtualMachineProfile(vmProfile, dest, context);