[libvirt] [BUG?] "no domain with matching uuid" error, when vm restarts

su disheng disheng.su at gmail.com
Wed Jan 13 23:00:54 UTC 2010


On Wed, Jan 13, 2010 at 2:39 AM, Daniel P. Berrange <berrange at redhat.com>wrote:

> On Tue, Jan 12, 2010 at 04:06:32PM -0800, su disheng wrote:
> > Hi,
> >     In the following libvirt API calling sequence, I always get an error
> "no
> > domain with matching uuid"
> >         Connect _conn = new Connect("qemu:///system", false);
> >          _conn.domainDefineXML(kvm_guest_xml);
> >          Domain dm = _conn.domainLookupByName(kvm_guest_name);
> >          dm.create();
> >
> >          /* stop, undefine, and re-start the vm*/
> >          dm.shutdown();
> >          dm.undefine();
> >          dm.domainDefineXML(kvm_guest_xml);
> >          /****A****/
> >          Domain dm = _conn.domainLookupByName(kvm_guest_name);
> >          dm.create()  /********Error!!!!**/
> >
> >        if I close the connection, and re-connect qemu at the end of
> > /****A****/, then everything is OK.
>
> I think the first 'dm'  object you create is not being freed / garbage
> collected. This means the underlying libvirt virDomainPtr object is
> not released. And so when you then _conn.domainLookupByName() after
> '****A****'  you are still getting an handle to the old object and
> thus the stale UUID.
>
>
Hmm, got it. If free all the returned virDomainPtr, then the issue is gone.
One frustrated thing is that the API virDomainDefineXML, which returns a
virDomainPtr, I need to explicitly free it, even I don't reference it after
that function call... Got me crazy to debug it. Maybe it's better to mention
it in the API reference?

Another thing is "/* TODO search by UUID first as they are better
differenciators */" in virGetDomain, if libvirt does what it said here, my
issue will not be an issue again, right?


>
> >        From the log, seems that uuid is not updated immediately, for this
> > connection, the uuid is in the stale state?
> >        I am using libvirt 0.6.3, if it's a bug, does it fixed in the
> latest
> > code? or Have I need to close the connection for each vm
> shutdown/re-define?
>
> You should not need to close the connection, provided you ensure all the
> 'Domain' objects are freed/garbage collected
>
> Alternatively, if you wish to re-use the same name,then you could try
> auto-generating the  UUID yourself, so you use the same UUID when
> defining the domain for the second time
>
>
> Daniel
> --
> |: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/:|
> |: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org:|
> |: http://autobuild.org       -o-         http://search.cpan.org/~danberr/<http://search.cpan.org/%7Edanberr/>:|
> |: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505
> :|
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20100113/5da62d01/attachment-0001.htm>


More information about the libvir-list mailing list