From b1035386748689a064efc3cda3e854d233237185 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 25 Apr 2013 16:05:51 +0900 Subject: ovs.poller: workaround a bug in eventlet Signed-off-by: YAMAMOTO Takashi Signed-off-by: FUJITA Tomonori --- ryu/contrib/ovs/poller.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ryu/contrib/ovs/poller.py b/ryu/contrib/ovs/poller.py index 7d15f3ed..ffd6a399 100644 --- a/ryu/contrib/ovs/poller.py +++ b/ryu/contrib/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) -- cgit v1.2.3