some system calls and signal will interrupt poll,                                <br>making event loop stops and fails to react events and keepalive message         <br>from libvirt.                                                                   <br>
adding handling EINTR to poll to make it more robust                            <br>                                                                                <br>Signed-off-by: lvroyce <<a href="mailto:lvroyce@linux.vnet.ibm.com">lvroyce@linux.vnet.ibm.com</a>>                             <br>
---                                                                             <br> examples/domain-events/events-python/event-test.py |    8 +++++++-             <br> 1 files changed, 7 insertions(+), 1 deletions(-)                               <br>
                                                                                <br>diff --git a/examples/domain-events/events-python/event-test.py b/examples/domain-events/events-python/event-test.py<br>index 96dc268..b446c21 100644                                                   <br>
--- a/examples/domain-events/events-python/event-test.py                        <br>+++ b/examples/domain-events/events-python/event-test.py                        <br>@@ -188,7 +188,13 @@ class virEventLoopPure:                                    <br>
                 sleep = (next - now) / 1000.0                                  <br>                                                                                <br>         debug("Poll with a sleep of %d" % sleep)                               <br>
-        events = self.poll.poll(sleep)                                         <br>+        try:                                                                   <br>+            events = self.poll.poll(sleep)                                     <br>
+        except select.error, e:                                                <br>+                self.runningPoll = False                                       <br>+                if not e.errno in (errno.EINTR, errno.EAGAIN):                 <br>
+                    raise                                                      <br>+                return                                                         <br>                                                                                <br>
         # Dispatch any file handle events that occurred                        <br>         for (fd, revents) in events:                                           <br>--                                                                              <br>
1.7.7.6<br>