cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lerh Chuan Low (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-11882) Clustering Key with ByteBuffer size > 64k throws Assertion Error
Date Fri, 27 May 2016 03:45:13 GMT


Lerh Chuan Low commented on CASSANDRA-11882:

Hey Branimir and Sylvain, thanks for reviewing. I've updated the patch and re-ran the tests.

{{overloadBuffer}}: I re-read the Code style documentation, I've made changes to the braces
and moved the comment away so the line isn't overly long, let me know if there are any more
format changes required.

{{assertInvalidThrow}}: Didn't realise this method existed, updated the tests. 

{{ByteBufferUtil}}: I've updated it to throw an IllegalArgumentException. I wasn't certain
if it could be reached via another way (I'm not familiar with the code base, naively I assume
no) but I guess the idea was that if it did, at least the node will not see the other node
as down forever after that until restart. Let me know if you feel strongly to leave it as

I also did try this on C* 3.5, it doesn't suffer from the same problem as 2.1, which I guess
is due to the big revamp of the storage engine :)

> Clustering Key with ByteBuffer size > 64k throws Assertion Error
> ----------------------------------------------------------------
>                 Key: CASSANDRA-11882
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL, Streaming and Messaging
>            Reporter: Lerh Chuan Low
>             Fix For: 2.1.x
>         Attachments: 11882-2.1.txt
> Setup:
> {code}
> CREATE KEYSPACE Blues WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor'
: 2};
> CREATE TABLE test (a text, b text, PRIMARY KEY ((a), b))
> {code}
> There currently doesn't seem to be an existing check for selecting clustering keys that
are larger than 64k. So if we proceed to do the following select:
> {code}
> SELECT * FROM Blues.test WHERE a = 'foo' AND b = 'something larger than 64k';
> {code}
> An AssertionError is thrown in `ByteBufferUtil` with just a number and an error message
detailing 'Coordinator node timed out waiting for replica nodes responses' . Additionally,
because an error extends Throwable (it's not a subclass of Exception), it's not caught so
the connection between the coordinator node and the other nodes which have the replicas seem
to be 'stuck' until it's restarted. Any other subsequent queries, even if it's just SELECT
where a = 'foo' and b = 'bar', will always return the Coordinator timing out waiting for replica
nodes responses'.

This message was sent by Atlassian JIRA

View raw message