[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