[libvirt] [PATCH] add handling EINTR to test example of event loop

Daniel P. Berrange berrange at redhat.com
Mon Jun 18 09:56:26 UTC 2012


On Mon, Jun 18, 2012 at 05:43:55PM +0800, lvroyce at linux.vnet.ibm.com wrote:
> From: lvroyce <lvroyce at linux.vnet.ibm.com>
> 
> some system call and signal will interrupt poll,
> making event loop stops and fails to react events and keepalive message
> from libvirt.
> adding handling EINTR to poll to make it more robust
> 
> Signed-off-by: lvroyce <lvroyce at linux.vnet.ibm.com>
> ---
>  examples/domain-events/events-python/event-test.py |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
> 
> diff --git a/examples/domain-events/events-python/event-test.py b/examples/domain-events/events-python/event-test.py
> index 96dc268..b446c21 100644
> --- a/examples/domain-events/events-python/event-test.py
> +++ b/examples/domain-events/events-python/event-test.py
> @@ -188,7 +188,13 @@ class virEventLoopPure:
>                  sleep = (next - now) / 1000.0
>  
>          debug("Poll with a sleep of %d" % sleep)
> -        events = self.poll.poll(sleep)
> +        try:
> +            events = self.poll.poll(sleep)
> +        except select.error, e:
> +                self.runningPoll = False
> +                if not e.errno in (errno.EINTR, errno.EAGAIN):
> +                    raise
> +                return

It isn't possible for poll() to return EAGAIN according to the
manpage.

If you remove that errno, then the patch would be ok. Also the
indentation in the except: block is too deep - line it up with
the try: block

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 libvir-list mailing list