[libvirt] [PATCH 02/15] util: Add virabstracts file for keeping abstract classes

Martin Kletzander mkletzan at redhat.com
Fri Apr 17 12:27:46 UTC 2015


On Fri, Apr 17, 2015 at 11:16:49AM +0100, Daniel P. Berrange wrote:
>On Thu, Apr 16, 2015 at 04:46:37PM +0200, Martin Kletzander wrote:
>> The first class in this file is going to be an abstract connection class
>> that holds a per-connection error inside.  virConnect will be the first
>> child class inheriting from this one.
>>
>> This is a separate file because virerror.c is going to depend on it and
>> putting it into datatypes along with other connect classes would create
>> a dependency on datatypes from the util library.
>
>So I can understand why you are doing this - you'll have the admin
>connection also inherit from this later, but....
>
>
>> +struct _virAbstractConnect {
>> +    virObjectLockable parent;
>> +
>> +    /*
>> +     * Object lock must be acquired before accessing/changing any of
>> +     * members following this point, or changing the ref count of any
>> +     * virDomain/virNetwork object associated with this connection.
>> +     */
>> +
>> +    /* Per-connection error. */
>> +    virError err;           /* the last error */
>> +    virErrorFunc handler;   /* associated handlet */
>> +    void *userData;         /* the user data */
>
>These fields are really legacy stuff that we no longer encourage the
>use of. These dated from before the time that we have thread-local
>error objects, and they cannot ever be safely accessed when using
>the virConnect in a multi-threaded context.
>
>So, if we're creating a new admin connection object, I'd really
>suggest we don't want to have these connection level error objects.
>Just mandate use of the thread-local errors for the admin connection
>
>IIUC, removing these error objects, would really kill the need for
>this virAbstractConnect class, as the admin connection could just
>inherit from virObjectLockable.
>

Yes, I wanted to dispatch errors on connections and just haven't
realized it's not needed.  Dropping two patches and changing four
lines fixed this and it Just Works.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150417/4441efa5/attachment-0001.sig>


More information about the libvir-list mailing list