You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ml...@apache.org on 2013/06/04 00:50:37 UTC

git commit: updated refs/heads/master to ddfdc9a

Updated Branches:
  refs/heads/master b325f7d3b -> ddfdc9af6


KVM - Don't fail to start due to old VM definition. On rare occasion we see
inactive VM definitions block a new VM starting. Definitions aren't supposed to
be persistent, but sometimes a crash or failed migration can leave behind a
definition.

Signed-off-by: Marcus Sorensen <ma...@betterservers.com> 1370299734 -0600


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ddfdc9af
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ddfdc9af
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ddfdc9af

Branch: refs/heads/master
Commit: ddfdc9af6316c91a5b6f5f269a05a45bba0006df
Parents: b325f7d
Author: Marcus Sorensen <ma...@betterservers.com>
Authored: Mon Jun 3 16:48:54 2013 -0600
Committer: Marcus Sorensen <ma...@betterservers.com>
Committed: Mon Jun 3 16:48:54 2013 -0600

----------------------------------------------------------------------
 .../kvm/resource/LibvirtComputingResource.java     |   18 +++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ddfdc9af/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
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 46fce24..e1ad7c2 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
@@ -1094,6 +1094,24 @@ ServerResource {
                 This also makes sure we never have any old "garbage" defined
                 in libvirt which might haunt us.
             */
+
+            // check for existing inactive vm definition and remove it
+            // this can sometimes happen during crashes, etc
+            Domain dm = null;
+            try {
+                dm = conn.domainLookupByName(vmName);
+                if (dm != null && dm.isPersistent() == 1) {
+                    // this is safe because it doesn't stop running VMs
+                    dm.undefine();
+                }
+            } catch (LibvirtException e) {
+                // this is what we want, no domain found
+            } finally {
+                if (dm != null) {
+                    dm.free();
+                }
+            }
+
             conn.domainCreateXML(domainXML, 0);
         } catch (final LibvirtException e) {
             throw e;