aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYAMAMOTO Takashi <yamamoto@valinux.co.jp>2013-04-16 15:56:31 +0900
committerBen Pfaff <blp@nicira.com>2013-04-16 09:17:06 -0700
commit0deea60f1db6d6f14e3244724a58a5e1997dee99 (patch)
tree54b6230779798ee8e99c7240cd324083ceb42844
parent6ec25c4c3fc5c9f69eae4af6adbe06a3f1993e10 (diff)
python/ovs/poller.py: workaround an eventlet bug
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp> Signed-off-by: Ben Pfaff <blp@nicira.com>
-rw-r--r--python/ovs/poller.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/python/ovs/poller.py b/python/ovs/poller.py
index 7d15f3ed..ffd6a399 100644
--- a/python/ovs/poller.py
+++ b/python/ovs/poller.py
@@ -18,6 +18,15 @@ import ovs.vlog
import select
import socket
+try:
+ import eventlet.patcher
+
+ def _using_eventlet_green_select():
+ return eventlet.patcher.is_monkey_patched(select)
+except:
+ def _using_eventlet_green_select():
+ return False
+
vlog = ovs.vlog.Vlog("poller")
POLLIN = 0x001
@@ -59,6 +68,10 @@ class _SelectSelect(object):
timeout = None
else:
timeout = float(timeout) / 1000
+ # XXX workaround a bug in eventlet
+ # see https://github.com/eventlet/eventlet/pull/25
+ if timeout == 0 and _using_eventlet_green_select():
+ timeout = 0.1
rlist, wlist, xlist = select.select(self.rlist, self.wlist, self.xlist,
timeout)