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

Sylvain Lebresne commented on CASSANDRA-10254:
----------------------------------------------

I've push a patch [here|https://github.com/pcmanus/cassandra/commits/10352] for 
fixing the incompatibility of paging state with pre-3.0 nodes. As said above, 
what the patch does is that is preserves the pre-existing format for paging 
states when using the native protocol v3. For the native protocol v4 however, 
we avoid it since 1) that saves us some work and 2) it allows to use a slightly 
more efficient format for the paging state.

That patch actually does _not_ fix 
{{TestCQL.static_columns_with_distinct_test}} and it took me a while to figure 
out why (as I assumed it was a 3.0 bug), but it turns out that it's an actual 
bug in 2.1/2.2 and I've opened CASSANDRA-10352 for that (and so mea culpa, I 
was wrong, this test failure is a 2.1/2.2 error). Anyway, keeping backward 
compatibility for paging state is needed anyway so keeping this ticket to deal 
with that.


> 3.0 paging states are incompatible with pre-3.0 nodes
> -----------------------------------------------------
>
>                 Key: CASSANDRA-10254
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10254
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Blake Eggleston
>            Assignee: Sylvain Lebresne
>             Fix For: 3.0.0 rc1
>
>
> When running the upgrade dtest {{TestCQL.static_columns_with_distinct_test}}, 
> the client appears to be passing in an invalid paging state (no cell name). 
> Instead of catching the problem in validation and returning an error to the 
> client, the select statement tries to run it, causing this exception:
> {noformat}
> ERROR QueryMessage.java:135 - Unexpected error during query
> java.lang.ClassCastException: 
> org.apache.cassandra.db.composites.Composites$EmptyComposite cannot be cast 
> to org.apache.cassandra.db.composites.CellName
>       at 
> org.apache.cassandra.service.pager.SliceQueryPager.<init>(SliceQueryPager.java:64)
>  ~[main/:na]
>       at 
> org.apache.cassandra.service.pager.MultiPartitionPager.makePager(MultiPartitionPager.java:93)
>  ~[main/:na]
>       at 
> org.apache.cassandra.service.pager.MultiPartitionPager.<init>(MultiPartitionPager.java:75)
>  ~[main/:na]
>       at 
> org.apache.cassandra.service.pager.QueryPagers.pager(QueryPagers.java:102) 
> ~[main/:na]
>       at 
> org.apache.cassandra.service.pager.QueryPagers.pager(QueryPagers.java:126) 
> ~[main/:na]
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:228)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:67)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:238)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:260) 
> ~[main/:na]
>       at 
> org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:122)
>  ~[main/:na]
>       at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:439)
>  [main/:na]
>       at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:335)
>  [main/:na]
>       at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> io.netty.channel.AbstractChannelHandlerContext.access$700(AbstractChannelHandlerContext.java:32)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> io.netty.channel.AbstractChannelHandlerContext$8.run(AbstractChannelHandlerContext.java:324)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_40]
>       at 
> org.apache.cassandra.concurrent.AbstractTracingAwareExecutorService$FutureTask.run(AbstractTracingAwareExecutorService.java:164)
>  [main/:na]
>       at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:105) 
> [main/:na]
>       at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40]
> {noformat}
> Running {code} UPGRADE_MODE=none nosetests 
> upgrade_tests/cql_tests.py:TestCQL.static_columns_with_distinct_test{code} 
> should cause the error.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to