fd #17, you don't exist. Go away.
If we get an event for an fd which no longer has a handler,
there is no useful action we can take. Rather than sit in a
tight loop raising KeyError exceptions as fast as we can,
just close the fd and unregister it from the eventfd.
Reduces severity of b/12896999 to tolerable levels.
Change-Id: I1c4890e55c1029b46dbe6b7420fc4f64384c9940
diff --git a/tornado/ioloop.py b/tornado/ioloop.py
index fe465eb..4189f58 100644
--- a/tornado/ioloop.py
+++ b/tornado/ioloop.py
@@ -333,6 +333,10 @@
else:
logging.error("Exception in I/O handler for fd %s",
fd, exc_info=True)
+ except KeyError:
+ logging.error("Handler for fd %s no longer exists, closing",
+ fd, exc_info=True)
+ self._impl.unregister(fd)
except Exception:
logging.error("Exception in I/O handler for fd %s",
fd, exc_info=True)