You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Rick Branson (JIRA)" <ji...@apache.org> on 2014/07/23 19:31:41 UTC

[jira] [Commented] (CASSANDRA-5239) Asynchronous (non-blocking) StorageProxy

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

Rick Branson commented on CASSANDRA-5239:
-----------------------------------------

That is an epic patch [~slebresne]. Throwing my +1 on this one. It would have profound reliability & performance impact. Not having to monopolize a thread for every running operation in a largely network and I/O bound system is big. It would really help smooth out the impact from proxy calls for temporary slowdowns on replicas. Unless I'm misunderstanding, this is the remaining synchronous piece in the network pipeline.

> Asynchronous (non-blocking) StorageProxy
> ----------------------------------------
>
>                 Key: CASSANDRA-5239
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5239
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 2.0 beta 1
>            Reporter: Vijay
>            Assignee: Sylvain Lebresne
>              Labels: performance
>             Fix For: 3.0
>
>
> Problem Statement: 
> Currently we have "rpc_min_threads, rpc_max_threads"/ "native_transport_min_threads/native_transport_max_threads" all of the threads in the TPE are blocking and takes resources, the threads are mostly sleeping. Increasing the Context switch costs.
> Details: 
> We should change StorageProxy methods to provide a callback which contains the location where the results has to be written. When the response arrive StorageProxy callback can write the results directly into the connection. Timeouts can be handled in the same way.
> Fixing Netty should be trivial with some refactor in the storage proxy (currently it is one method call for sending the request and waiting) we need callback.
> Fixing Thrift may be harder because thrift calls the method and expects a return value. We might need to write a custom Codec on Netty for thrift support, which can potentially do callbacks (A Custom codec may be similar to http://engineering.twitter.com/2011/04/twitter-search-is-now-3x-faster_1656.html but we dont know details about it). Another option is to update thrift to have a callback.
> FYI, The motivation for this ticket is from another project which i am working on with similar Proxy (blocking Netty transport) and making it Async gave us 2x throughput improvement.



--
This message was sent by Atlassian JIRA
(v6.2#6252)