[
https://issues.apache.org/jira/browse/CASSANDRA-11521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15281320#comment-15281320
]
Stefania commented on CASSANDRA-11521:
--------------------------------------
Just a quick update.
I have a tentative implementation
[here|https://github.com/apache/cassandra/compare/trunk...stef1927:11521#diff-468c74b80d7a1d5b21948217659af747R49]
based on a queue where a worker thread puts at most 3 pages and, if the queue
stays full for a specified number of seconds, then the worker thread releases
the resources and gives up. If the client keeps up, the worker continues to put
pages on the queue without releasing resources (well the pagers still create a
new partition iterator for each page but we can fix that later if it shows up
in JFR).
Unfortunately, the initial results from the [unit
tests|https://github.com/apache/cassandra/compare/trunk...stef1927:11521#diff-04e8835163e2a326515d61f448a8ebbcR75]
show that pure streaming is still about 3 times faster.
If I've read the profiles correctly, this is due to the fact that the encoding
of a {{ResultSet}} into a Netty {{ByteBuffer}} is still done synchronously when
the client requests a page. Therefore, I plan to encode the results directly
into a Netty BB ant put this, not a {{ResultSet}}, in the queue. Once this is
done, the difference between the two approaches should just be the client
request messages and the user of the pagers.
> Implement streaming for bulk read requests
> ------------------------------------------
>
> Key: CASSANDRA-11521
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11521
> Project: Cassandra
> Issue Type: Sub-task
> Components: Local Write-Read Paths
> Reporter: Stefania
> Assignee: Stefania
> Fix For: 3.x
>
>
> Allow clients to stream data from a C* host, bypassing the coordination layer
> and eliminating the need to query individual pages one by one.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)