[libvirt-users] Lifecycle of a connection to libvirtd

Martin Kletzander mkletzan at redhat.com
Mon Jul 25 04:44:59 UTC 2016


On Sun, Jul 24, 2016 at 11:13:08PM +0200, Vincent Bernat wrote:
>Hey!
>
>I am trying to figure out how to reliably maintain a connection to
>libvirtd. From the documentation, I would expect something like that:
>
> - virConnectOpen()
> - virConnectRegisterCloseCallback()
> - virConnectSetKeepAlive()
> - Application logic
>
>And in the registered callback, I would:
>
> - virConnectUnregisterCloseCallback()
> - virConnectClose()
> - virConnectOpen()
> - virConnectRegisterCloseCallback()
> - virConnectSetKeepAlive()
>
>However, looking at the source code of virsh, I see that it additional
>stuff, notably:
>
> - virConnectIsAlive()
> - checking error codes of all calls to check if they are the result of
>   a disconnect
>
>Are those steps needed? Randomly checking virConnectIsAlive() doesn't
>seem reliable. Checking individual error codes either (maybe I will miss
>one of them or misinterpret another one).
>
>virsh code uses those error codes to check if there is a disconnection:
>
>             (((last_error->code == VIR_ERR_SYSTEM_ERROR) &&
>               (last_error->domain == VIR_FROM_REMOTE)) ||
>              (last_error->code == VIR_ERR_RPC) ||
>              (last_error->code == VIR_ERR_NO_CONNECT) ||
>              (last_error->code == VIR_ERR_INVALID_CONN))))
>
>Any hint?

You don't need to do any of these.  The connection is checked as a part
of connection callback which we have just to de-duplicate some code in
virsh and virt-manager.  It can happen that it is checked before the
first command and needs to be connected (or reconnected) before the next
one.  It's mostly because we allow users to do arbitrary commands that
can change where we are connected and few other things.

The errors are checked because there wasn't a close callback back then
and it just stuck with us.  Someone should remove it and at the same
time make sure one more time close callback handles these.

>--
>Program defensively.
>            - The Elements of Programming Style (Kernighan & Plauger)
>
>_______________________________________________
>libvirt-users mailing list
>libvirt-users at redhat.com
>https://www.redhat.com/mailman/listinfo/libvirt-users
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20160725/f21494be/attachment.sig>


More information about the libvirt-users mailing list