Marco Matarazzo created CASSANDRA-4426: ------------------------------------------
Summary: CQL error on query prepare Key: CASSANDRA-4426 URL: https://issues.apache.org/jira/browse/CASSANDRA-4426 Project: Cassandra Issue Type: Bug Affects Versions: 1.1.2 Reporter: Marco Matarazzo We're using (packaged) cassandra 1.1.2 on Ubuntu LTS 12.04 . This is a CF on a KS with replica_factor 3, on a cluster with 3 nodes: cqlsh:goh_release> DESCRIBE COLUMNFAMILY agents_skill CREATE TABLE agents_skill ( agent_id ascii, skill ascii, value ascii, PRIMARY KEY (agent_id, skill) ) WITH COMPACT STORAGE AND comment='' AND caching='KEYS_ONLY' AND read_repair_chance=0.100000 AND gc_grace_seconds=864000 AND min_compaction_threshold=4 AND max_compaction_threshold=32 AND replicate_on_write='true' AND compaction_strategy_class='SizeTieredCompactionStrategy' AND compression_parameters:sstable_compression='SnappyCompressor'; cqlsh:goh_release> On this query : UPDATE agents_skill USING CONSISTENCY QUORUM SET value = ? WHERE agent_id = ? and skill = ? ...sometimes we get this error on cql_prepare_query(): Error : line 1:78 mismatched input 'and' expecting EOF The error happens randomly (or with a pattern that I can't understand) and it does not make any sense to me. Normally the query works, as I would expect. I am using PHPCassa, and I was not sure where the error could be. I somewhat remembered that CQL should be passed to cassandra "as is", but not knowing Cassandra internal too well, I took a very low-level approach... I hope is not too low :-) I see this on tcpdump when i receive the error: 18:49:51.800398 IP 10.0.3.177.42205 > 10.0.3.170.9160: Flags [P.], seq 840:979, ack 766, win 1047, options [nop,nop,TS val 130357758 ecr 135322260], length 139 0x0000: aacc 0000 0208 aacc 0000 020f 0800 4500 ..............E. 0x0010: 00bf c2d9 4000 4006 5c05 0a00 03b1 0a00 ....@.@.\....... 0x0020: 03aa a4dd 23c8 16b9 de71 a9db 9466 8018 ....#....q...f.. 0x0030: 0417 ad09 0000 0101 080a 07c5 19fe 0810 ................ 0x0040: da94 0000 0087 8001 0001 0000 0011 7072 ..............pr 0x0050: 6570 6172 655f 6371 6c5f 7175 6572 7900 epare_cql_query. 0x0060: 0000 000b 0001 0000 005b 5550 4441 5445 .........[UPDATE 0x0070: 2061 6765 6e74 735f 736b 696c 6c20 5553 .agents_skill.US 0x0080: 494e 4720 434f 4e53 4953 5445 4e43 5920 ING.CONSISTENCY. 0x0090: 5155 4f52 554d 2053 4554 2076 616c 7565 QUORUM.SET.value 0x00a0: 203d 203f 2057 4845 5245 2061 6765 6e74 .=.?.WHERE.agent 0x00b0: 5f69 6420 3d20 3f20 616e 6420 736b 696c _id.=.?.and.skil 0x00c0: 6c20 3d20 3f08 0002 0000 0002 00 l.=.?........ 18:49:51.817323 IP 10.0.3.170.9160 > 10.0.3.177.42205: Flags [P.], seq 766:857, ack 979, win 587, options [nop,nop,TS val 135322264 ecr 130357758], length 91 0x0000: aacc 0000 020f aacc 0000 0208 0800 4500 ..............E. 0x0010: 008f 4b1d 4000 4006 d3f1 0a00 03aa 0a00 ..K.@.@......... 0x0020: 03b1 23c8 a4dd a9db 9466 16b9 defc 8018 ..#......f...... 0x0030: 024b 1bdc 0000 0101 080a 0810 da98 07c5 .K.............. 0x0040: 19fe 0000 0057 8001 0002 0000 0011 7072 .....W........pr 0x0050: 6570 6172 655f 6371 6c5f 7175 6572 7900 epare_cql_query. 0x0060: 0000 000c 0001 0b00 0100 0000 2e6c 696e .............lin 0x0070: 6520 313a 3738 206d 6973 6d61 7463 6865 e.1:78.mismatche 0x0080: 6420 696e 7075 7420 2761 6e64 2720 6578 d.input.'and'.ex 0x0090: 7065 6374 696e 6720 454f 4600 00 pecting.EOF.. Same query, some minutes later, worked (as I would expect) and I see this: 19:11:26.471750 IP 10.0.3.177.42283 > 10.0.3.170.9160: Flags [P.], seq 906:1045, ack 1181, win 1114, options [nop,nop,TS val 130681426 ecr 135645928], length 139 0x0000: aacc 0000 0208 aacc 0000 020f 0800 4500 ..............E. 0x0010: 00bf 352a 4000 4006 e9b4 0a00 03b1 0a00 ..5*@.@......... 0x0020: 03aa a52b 23c8 232a 42f7 c47b cf1e 8018 ...+#.#*B..{.... 0x0030: 045a 0578 0000 0101 080a 07ca 0a52 0815 .Z.x.........R.. 0x0040: cae8 0000 0087 8001 0001 0000 0011 7072 ..............pr 0x0050: 6570 6172 655f 6371 6c5f 7175 6572 7900 epare_cql_query. 0x0060: 0000 000b 0001 0000 005b 5550 4441 5445 .........[UPDATE 0x0070: 2061 6765 6e74 735f 736b 696c 6c20 5553 .agents_skill.US 0x0080: 494e 4720 434f 4e53 4953 5445 4e43 5920 ING.CONSISTENCY. 0x0090: 5155 4f52 554d 2053 4554 2076 616c 7565 QUORUM.SET.value 0x00a0: 203d 203f 2057 4845 5245 2061 6765 6e74 .=.?.WHERE.agent 0x00b0: 5f69 6420 3d20 3f20 616e 6420 736b 696c _id.=.?.and.skil 0x00c0: 6c20 3d20 3f08 0002 0000 0002 00 l.=.?........ 19:11:26.472067 IP 10.0.3.170.9160 > 10.0.3.177.42283: Flags [P.], seq 1181:1318, ack 1045, win 587, options [nop,nop,TS val 135645928 ecr 130681426], length 137 0x0000: aacc 0000 020f aacc 0000 0208 0800 4500 ..............E. 0x0010: 00bd 0069 4000 4006 1e78 0a00 03aa 0a00 ...i@.@..x...... 0x0020: 03b1 23c8 a52b c47b cf1e 232a 4382 8018 ..#..+.{..#*C... 0x0030: 024b 1c0a 0000 0101 080a 0815 cae8 07ca .K.............. 0x0040: 0a52 0000 0085 8001 0002 0000 0011 7072 .R............pr 0x0050: 6570 6172 655f 6371 6c5f 7175 6572 7900 epare_cql_query. 0x0060: 0000 000c 0000 0800 0188 659f 9308 0002 ..........e..... 0x0070: 0000 0003 0f00 030b 0000 0003 0000 0009 ................ 0x0080: 4173 6369 6954 7970 6500 0000 0941 7363 AsciiType....Asc 0x0090: 6969 5479 7065 0000 0009 4173 6369 6954 iiType....AsciiT 0x00a0: 7970 650f 0004 0b00 0000 0300 0000 0576 ype............v 0x00b0: 616c 7565 0000 0008 6167 656e 745f 6964 alue....agent_id 0x00c0: 0000 0005 736b 696c 6c00 00 ....skill.. When i get the error I just see this on system.log : DEBUG [Thrift:1637] 2012-07-07 18:49:51,800 CassandraServer.java (line 1250) prepare_cql_query DEBUG [Thrift:1637] 2012-07-07 18:49:51,818 CustomTThreadPoolServer.java (line 196) Thrift transport error occurred during processing of message. org.apache.thrift.transport.TTransportException at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129) at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204) at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:22) at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Enabling TRACE does not give much more, to my eyes: DEBUG [Thrift:11] 2012-07-07 19:34:51,284 CassandraServer.java (line 1250) prepare_cql_query TRACE [Thrift:11] 2012-07-07 19:34:51,284 QueryProcessor.java (line 883) CQL QUERY: UPDATE agents_skill USING CONSISTENCY QUORUM SET value = ? WHERE agent_id = ? and skill = ? DEBUG [ReadRepairStage:2] 2012-07-07 19:34:51,285 RowDigestResolver.java (line 110) resolve: 2 ms. DEBUG [Thrift:11] 2012-07-07 19:34:51,286 CustomTThreadPoolServer.java (line 196) Thrift transport error occurred during processing of message. org.apache.thrift.transport.TTransportException at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129) at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204) at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:22) at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) DEBUG [Thrift:11] 2012-07-07 19:34:51,294 ClientState.java (line 130) logged out: #<User allow_all groups=[]> -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira