An update to my earlier patch, which had been just against the event queue put(). It occurs to me that the event queue get() poses just as much of a potential issue.
Please find the revised patch below. Signed-off-by: Victor J. Orlikowski <v...@duke.edu> diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py index 3d5d895..dfbd599 100644 --- a/ryu/base/app_manager.py +++ b/ryu/base/app_manager.py @@ -279,15 +279,23 @@ class RyuApp(object): def _event_loop(self): while self.is_active or not self.events.empty(): - ev, state = self.events.get() - if ev == self._event_stop: + ev = state = None + try: + ev, state = self.events.get(timeout=5) + except hub.Empty: + continue + if (ev is None) or (ev == self._event_stop): continue handlers = self.get_handlers(ev, state) for handler in handlers: handler(ev) def _send_event(self, ev, state): - self.events.put((ev, state)) + try: + self.events.put((ev, state), timeout=5) + except hub.Full: + LOG.debug("EVENT LOST FOR %s %s", + self.name, ev.__class__.__name__) def send_event(self, name, ev, state=None): """ @@ -520,7 +528,7 @@ class AppManager(object): self._close(app) events = app.events if not events.empty(): - app.logger.debug('%s events remians %d', app.name, events.qsize()) + app.logger.debug('%s events remains %d', app.name, events.qsize()) def close(self): def close_all(close_dict): Best, Victor -- Victor J. Orlikowski <> vjo@[cs.]duke.edu ------------------------------------------------------------------------------ _______________________________________________ Ryu-devel mailing list Ryu-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ryu-devel