Community
Participate
Working Groups
Continuation implementations may deadlock because they call listener callbacks with the continuation lock held. If the listener callback performs some method call on the continuation, a deadlock may happen. A case for this is available here for FauxContinuation: http://groups.google.com/group/cometd-users/browse_thread/thread/a5cef9c0af7ec577 However, AsyncContinuation is not immune: scheduleTimeout() is called with the continuation lock held, and it may call expired() for blocking endpoints, which notifies listeners.
In Jetty 9, HttpChannelState (that replaced AsyncContinuation) is now free of the deadlock problem, because listeners are notified outside synchronized blocks.