You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jonathan Ellis (JIRA)" <ji...@apache.org> on 2013/11/20 00:43:19 UTC
[jira] [Resolved] (CASSANDRA-5575) permanent client failures:
attempting batch_mutate on data that serializes to more than
thrift_framed_transport_size_in_mb fails forever
[ https://issues.apache.org/jira/browse/CASSANDRA-5575?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jonathan Ellis resolved CASSANDRA-5575.
---------------------------------------
Resolution: Duplicate
bq. I still don't understand why Cassandra has both of these parameters – the second parameter appears to be superfluous
this was fixed in CASSANDRA-4729
> permanent client failures: attempting batch_mutate on data that serializes to more than thrift_framed_transport_size_in_mb fails forever
> ------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-5575
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5575
> Project: Cassandra
> Issue Type: Bug
> Reporter: John R. Frank
>
> Since batch_mutate is a thrift interface, it unifies all of the data in a batch into a single thrift message. This means that clients cannot easily predict whether a batch will exceed thrift_framed_transport_size_in_mb
> Thrift's client libraries do not yet raise an exception on exceeding the frame size:
> https://issues.apache.org/jira/browse/THRIFT-1324
> So, Cassandra clients are doomed to the infinite loop illustrated here:
> http://mail-archives.apache.org/mod_mbox/cassandra-user/201305.mbox/%3Calpine.DEB.2.00.1305101202190.25200@computableinsights.com%3E
> I still don't understand why Cassandra has both of these parameters -- the second parameter appears to be superfluous:
> {code:borderStyle=solid}
> # Frame size for thrift (maximum field length).
> thrift_framed_transport_size_in_mb: 1500
> # The max length of a thrift message, including all fields and
> # internal thrift overhead.
> thrift_max_message_length_in_mb: 1600
> {code}
> (Note the monsterous message sizes we are now using to avoid zoombie clients; This is clearly too brittle to go into production. Is Cassandra really only for small batches?)
> Possible solutions:
> 1) fix Thrift and catch the error inside all the Cassandra clients and subdivide the batch and raise a further error if an individual message is too large.
> 2) change batch_mutate to serialize each mutation separately and assemble the messages into a thrift transmission controlled more directly by the client
> 3) plan the end-of-life of the Thrift interfaces to Cassandra and replace them with something else -- the new "binary streaming" protocol we've been hearing about?
> Other ideas?
--
This message was sent by Atlassian JIRA
(v6.1#6144)