diff options
author | YAMAMOTO Takashi <yamamoto@valinux.co.jp> | 2013-04-16 15:56:31 +0900 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2013-04-16 09:17:06 -0700 |
commit | 0deea60f1db6d6f14e3244724a58a5e1997dee99 (patch) | |
tree | 54b6230779798ee8e99c7240cd324083ceb42844 | |
parent | 6ec25c4c3fc5c9f69eae4af6adbe06a3f1993e10 (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.py | 13 |
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) |