https://bz.apache.org/bugzilla/show_bug.cgi?id=66531
Bug ID: 66531
Summary: Threading model causes deadlocks
Product: Tomcat 8
Version: 8.5.72
Hardware: Macintosh
OS: Mac OS X 10.1
Status: NEW
Severity: normal
Priority: P2
Component: WebSocket
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ----
Some tasks in Tomcat require a thread to run on. These tasks use the same
thread pool as processing for incoming messages. The deadlock happen when all
threads are busy handling incoming messages and all of them run a task which
waits on getting a thread which is not available.
Example: upon receiving a message, send a response. To implement this, we can
call getAsyncRemote().sendText(data, callback) from onMessage. Then wait for
callback.succeeded() in OnMessage. If all threads receive a message at the same
time, they will deadlock.
To fix this, short circuit the callback execution in case if there are no spare
threads: fail it immediately on the same thread.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]