diff options
author | YAMAMOTO Takashi <yamamoto@valinux.co.jp> | 2013-04-25 16:05:51 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2013-04-28 08:14:29 +0900 |
commit | b1035386748689a064efc3cda3e854d233237185 (patch) | |
tree | 08b1b23e85806321f4b9691e4db981c3b3611f65 | |
parent | 507d11d00b57ab5c2d49d0bf8f2c346d263fe8d7 (diff) |
ovs.poller: workaround a bug in eventlet
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/contrib/ovs/poller.py | 13 |
1 files changed, 13 insertions, 0 deletions
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) |