[libvirt-users] Is this Race Condition?

Daniel P. Berrange berrange at redhat.com
Thu Apr 5 10:38:53 UTC 2012


On Thu, Apr 05, 2012 at 06:06:43PM +0800, Zhihua Che wrote:
> Hi, everyone
> 
>     I'm  writing application using libvirt and I need call
> virDomainGetCPUStats to get domain cpu stats . I learn from API
> reference that this function has to be called when domain is running.
> So my question is if there is an atomic way to test the domain's state
> and get its stats?
> 
>    Or, it's ok to call this function when domain is not active, but
> caller just gets error returned.
> 
>    In my code, I just call it directly and return error. I wonder if
> this programming practice has subtle problem like race condition.

For a function which is only callable when the domain is running, libvirt
will return a special error code  VIR_ERR_OPERATION_INVALID  if you invoke
it when the domain is shutoff.

Thus the race-free way to deal with this scenario is to just call the
API, and check for VIR_ERR_OPERATION_INVALID. Any other error code is
an indication of a "real" error situaton.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvirt-users mailing list