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

Sylvain Lebresne commented on CASSANDRA-8128:
---------------------------------------------

What the stack trace is saying is that there is more bind marker in the query 
than there is values (in other words, the client somehow didn't sent enough 
values). This should have failed with a meaningful error, but said meaningful 
error is thrown by {{QueryProcess.process()}} but it it appears that DSE bypass 
this method using it's own {{DseQueryHandler.process}} and that might be 
missing the proper check. So I'd first report this through the DataStax support 
so it gets fixed there (provided I'm right that the check is missing).

Now I suppose your real problem is why less values than needed were sent. It's 
a good question but it's unlikely a server-side problem. It could a problem in 
your code, or it could be a problem with your driver triggered by large 
batches. For instance, one thing that comes to mind is that there is a hard 
limit in the protocol of 64K values per statement and the java driver used to 
not validate that properly 
([JAVA-515|https://datastax-oss.atlassian.net/browse/JAVA-515] which is fixed 
in more recent versions of the driver), so if your statement ends up having 
more than that, it could trigger an overflow that silently trigger this problem.

Anyway, it's unlikely a server side problem (except for the validation problem, 
but unless proved otherwise, Apache Cassandra does properly validate this case) 
so closing this. If you have further elements that seems to indicate that 
Cassandra is to blame, feel free to reopen with those elements.

> Exception when executing UPSERT
> -------------------------------
>
>                 Key: CASSANDRA-8128
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8128
>             Project: Cassandra
>          Issue Type: Bug
>          Components: API
>            Reporter: Jens Rantil
>            Priority: Critical
>              Labels: cql3
>             Fix For: 2.0.12
>
>
> I am putting a bunch of (CQL) rows into Datastax DSE 4.5.1-1. Each upsert is 
> for a single partition key with up to ~3000 clustering keys. I understand to 
> large upsert aren't recommended, but I wouldn't expect to be getting the 
> following exception anyway:
> {noformat}
> ERROR [Native-Transport-Requests:4205136] 2014-10-16 12:00:38,668 
> ErrorMessage.java (line 222) Unexpected exception during request
> java.lang.IndexOutOfBoundsException: Index: 1749, Size: 1749
>         at java.util.ArrayList.rangeCheck(ArrayList.java:635)
>         at java.util.ArrayList.get(ArrayList.java:411)
>         at 
> org.apache.cassandra.cql3.Constants$Marker.bindAndGet(Constants.java:278)
>         at 
> org.apache.cassandra.cql3.Constants$Setter.execute(Constants.java:307)
>         at 
> org.apache.cassandra.cql3.statements.UpdateStatement.addUpdateForKey(UpdateStatement.java:99)
>         at 
> org.apache.cassandra.cql3.statements.BatchStatement.addStatementMutations(BatchStatement.java:200)
>         at 
> org.apache.cassandra.cql3.statements.BatchStatement.getMutations(BatchStatement.java:145)
>         at 
> org.apache.cassandra.cql3.statements.BatchStatement.execute(BatchStatement.java:251)
>         at 
> org.apache.cassandra.cql3.statements.BatchStatement.execute(BatchStatement.java:232)
>         at 
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:158)
>         at 
> com.datastax.bdp.cassandra.cql3.DseQueryHandler.statementExecution(DseQueryHandler.java:207)
>         at 
> com.datastax.bdp.cassandra.cql3.DseQueryHandler.process(DseQueryHandler.java:86)
>         at 
> org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:119)
>         at 
> org.apache.cassandra.transport.Message$Dispatcher.messageReceived(Message.java:304)
>         at 
> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
>         at 
> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
>         at 
> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
>         at 
> org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.doRun(ChannelUpstreamEventRunnable.java:43)
>         at 
> org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:67)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:745)
> {noformat}



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

Reply via email to