[libvirt-users] virConnectIsAlive

Michal Privoznik mprivozn at redhat.com
Tue Oct 17 07:58:50 UTC 2017


On 10/17/2017 07:51 AM, llilulu wrote:
> Hi
>     In my program , When libvirtd restart , the old libvirtd connection(virConnectPtr) has to reconnect, Before usr old virConnectPtr , I call virConnectIsAlive. but when I restart libvirtd , virConnectIsAlive return 1, and I continue other operate use the old virConnectPtr, program will receive signal pipe.
>     I use libvirt event. before any api use, I call virEventRegisterDefaultImpl, and run virEventRunDefaultImpl. then use virConnectIsAlive, when I restart libvirtd, virConnectIsAlive will return 0, I want know how to use virConnectIsAlive, if virConnectIsAlive use  keep alive message, what default the interval and count.
>    Thanks
> 

virConnectIsAlive() will produce desired result only when event loop is
used (e.g. virEventRunDefaultImpl()). However, with this API there'll
always be TOCTOU [1] race. Therefore I suggest registering a disconnect
callback that reconnects. At least that's how it is done in virsh. This
[2] is called before every command and then this [3] is the callback.

Michal

1: https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use
2:
https://libvirt.org/git/?p=libvirt.git;a=blob;f=tools/virsh.c;h=d1789f03adf1e264e5444dde9276be91bfc8a440;hb=HEAD#l336
3:
https://libvirt.org/git/?p=libvirt.git;a=blob;f=tools/virsh.c;h=d1789f03adf1e264e5444dde9276be91bfc8a440;hb=HEAD#l97




More information about the libvirt-users mailing list