From 97d2e3fe7772fa01941295397f9d59d35cf47671 Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Wed, 13 Mar 2013 12:57:46 -0600 Subject: [PATCH] Summary: KVM - remove harmless message about domain not found on VM stop Detail: When we stop a VM, it's definition is no longer valid. Therefore, we need to catch the exception thrown from libvirt in trying to lookup a non-existent domain by UUID while trying to check if it's shut down. BUG-ID:CLOUDSTACK-600 Signed-off-by: Marcus Sorensen 1363201066 -0600 --- .../resource/LibvirtComputingResource.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index af4ae372681..4e1779b9441 100755 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -3939,23 +3939,32 @@ ServerResource { .getBytes())); int persist = dm.isPersistent(); if (force) { - if (dm.getInfo().state != DomainInfo.DomainState.VIR_DOMAIN_SHUTOFF) { + if (dm.isActive() == 1) { dm.destroy(); if (persist == 1) { dm.undefine(); } } } else { - if (dm.getInfo().state == DomainInfo.DomainState.VIR_DOMAIN_SHUTOFF) { + if (dm.isActive() == 0) { return null; } dm.shutdown(); int retry = _stopTimeout / 2000; - /* Wait for the domain gets into shutoff state */ - while ((dm.getInfo().state != DomainInfo.DomainState.VIR_DOMAIN_SHUTOFF) - && (retry >= 0)) { - Thread.sleep(2000); - retry--; + /* Wait for the domain gets into shutoff state. When it does + the dm object will no longer work, so we need to catch it. */ + try { + while ( dm.isActive() == 1 && (retry >= 0)) { + Thread.sleep(2000); + retry--; + } + } catch (LibvirtException e) { + String error = e.toString(); + if (error.contains("Domain not found")) { + s_logger.debug("successfully shut down vm " + vmName); + } else { + s_logger.debug("Error in waiting for vm shutdown:" + error); + } } if (retry < 0) { s_logger.warn("Timed out waiting for domain " + vmName