On Jan 14, 2014, at 6:27 AM, Dustin J. Mitchell <dus...@v.igoro.us> wrote:

> Second, this has nothing whatsoever to do with whether the I/O is
> blocking or not.  Twisted apps can and, believe me from experience, do
> suffer from stuck TCP connections.  Sure, the wasted resources in this
> case are smaller (just a file descriptor, not a thread), but the user
> experience is the same (part of the application hangs irreversibly).
> In fact, this is about the only thing the manhole is used for at
> Mozilla: running `os.close` on stuck fd's.

The lack of 'abortConnection' was a pretty serious design flaw in Twisted's 
transport interface initially, but that's been resolved for quite some time 
now.  It should be possible to handle this at the application level on a 
per-connection basis quite gracefully now.

I mean, your point is correct; you can certainly have "stuck" event sources in 
Twisted too, without any threads.  And without any intervention it results in 
exactly the same bad user experience.  I've certainly seen it myself.

However, intervention is easier than with a stuck thread.  You can't interrupt 
an arbitrary thread; you don't know and can't tell what it is doing without 
pretty invasive debugging instrumentation.  And, as you note, even before the 
advent of abortConnection, an os.close() could easily deal with a stuck async 
FD on a per-connection basis, without need to bring the entire process down.

Finally, we have abortConnection now, so my main point stands; the point was 
not "never call os._exit" but rather "if you have to call os._exit, there's a 
bug".  The same is true here: if you have to manhole into your server to call 
os.close, there's a bug in your application where it's not timing something out 
and freeing a resource it otherwise could be freeing.

Unless your contention is that there are no bugs in buildbot? ;-)

-glyph

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to