[
https://issues.apache.org/jira/browse/THRIFT-831?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bryan Duxbury updated THRIFT-831:
---------------------------------
Attachment: thrift-831-v2.patch
I think this fixes the problem. I was missing a flush() call on the underlying
transport.
I was unable to test the change in Cassandra itself because after committing
THRIFT-830, Cassandra TRUNK no longer compiles. (I assume we need patches from
Nate on that front.)
> FramedTransport implementation that reuses its buffers
> ------------------------------------------------------
>
> Key: THRIFT-831
> URL: https://issues.apache.org/jira/browse/THRIFT-831
> Project: Thrift
> Issue Type: New Feature
> Components: Library (Java)
> Reporter: Bryan Duxbury
> Assignee: Bryan Duxbury
> Priority: Blocker
> Fix For: 0.4
>
> Attachments: thrift-831-v2.patch, thrift-831.patch
>
>
> The current version of TFramedTransport allocates new read and write buffers
> every time a frame is read or written. This is wasteful, leading to expensive
> byte[] allocations, soaking up cpu and GC time unnecessarily.
> It would be handy to have an implementation that automatically reuses
> existing buffers if they're big enough, and grows them as appropriate. My
> testing shows this to be as much as a 60% reduction in CPU cost in dealing
> with the transport.
> I think it's important for us to keep separate implementations available,
> since different applications might prefer to spend the CPU time to avoid
> having a big chunk of memory permanently allocated.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.