[ 
https://issues.apache.org/jira/browse/CASSANDRA-5926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13748561#comment-13748561
 ] 

Jonathan Ellis commented on CASSANDRA-5926:
-------------------------------------------

"serie" typo, otherwise +1
                
> The native protocol server can deadlock
> ---------------------------------------
>
>                 Key: CASSANDRA-5926
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5926
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Sylvain Lebresne
>            Assignee: Sylvain Lebresne
>             Fix For: 1.2.9
>
>         Attachments: 5926.txt
>
>
> Until CASSANDRA-5239 (i.e. since StorageProxy is blocking), the native 
> protocol server needs to use a thread per request being processed. For that, 
> it currently use a DebuggableThreadPoolExecutor, but with a limited queue. 
> The rational being that we don't want to OOM if a client overwhelm the 
> server. Rather, we prefer blocking (which DTPE gives us) on the submission of 
> new request by the netty worker threads when all threads are busy.
> However, as it happens, when netty sends back a response to a query, there is 
> cases where some events (technically, InterestChanged and WriteComplete 
> events) are send up the pipeline. And those event are submitted on the 
> request executor as other requests. Long story short, a request thread can 
> end blocking on the submission to its own executor, hence deadlocking.
> The simplest solution is probably to reuse MemoryAwareThreadPoolExecutor from 
> netty rather that our own DTPE as it also allow to block task submission when 
> all threads are busy but knows not to block it's own internal events.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to