[libvirt] AttributeError in virConnect.__del__ at program exit

Sandro Bonazzola sbonazzo at redhat.com
Thu Jun 13 07:10:13 UTC 2013


Il 13/06/2013 08:54, Sandro Bonazzola ha scritto:
> Il 12/06/2013 19:31, Cole Robinson ha scritto:
>> On 06/12/2013 04:10 AM, Sandro Bonazzola wrote:
>>> Il 11/06/2013 18:21, Cole Robinson ha scritto:
>>>> On 06/11/2013 07:58 AM, Sandro Bonazzola wrote:
>>>>> Hi,
>>>>> using vdsm python code, I've the following error at program exit that
>>>>> seems to be related to libvirt python code, something wrong in a destructor:
>>>>>
>>>>> Exception AttributeError: AttributeError("virConnect instance has  no
>>>>> attribute 'domainEventCallbacks'",) in <bound method  virConnect.__del__
>>>>> of <libvirt.virConnect instance at  0x4280f38>> ignored
>>>>>
>>>>> I'm using libvirt 1.0.6
>>>>>
>>>>> Is it a known issue? Is there any workaround / fix ?
>>>>>
>>>> I've seen this too, sometimes via the virtinst test suite. Once upon a time I
>>>> tracked it down to whether the virtinst code did 'import selinux' or not, so
>>>> maybe it's a just some weird race, or a side effect of something other
>>>> libraries do in their cleanup path. By inspection alone the __del__ handler
>>>> doesn't seem to be doing anything wrong.
>>>>
>>>> - Cole
>>> It seems related only to domainEventCallbacks so maybe it appears only
>>> after a domain creation / modification.
>>>
>> Oh, sorry, now that I look at the code it makes a bit more sense. The error I
>> was recalling was a __del__ Exception but wasn't involving domain events.
>>
>> But I still don't see why __del__ is complaining, since the whole thing is
>> wrapped in try: ... except AttributeError. So not sure what the issue is.
>>
>> - Cole
>
> According to the python documentation, you can't handle exception in
> __del__:
> http://docs.python.org/2/reference/datamodel.html#object.__del__
>
> Warning
>
> Due to the precarious circumstances under which __del__()
> <http://docs.python.org/2/reference/datamodel.html#object.__del__>
> methods are invoked, exceptions that occur during their execution are
> ignored, and a warning is printed to sys.stderr instead.
>
> So you have to test the existence of the attribute before using it and
> not try to use it and try to handle an exception that can't be handled.

You can use hasattr for checking if the object has the needed attribute.


>
>
>
>
>
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list


-- 
Sandro Bonazzola
Better technology. Faster innovation. Powered by community collaboration.
See how it works at redhat.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130613/4a31a016/attachment-0001.htm>


More information about the libvir-list mailing list