Cassandra
  1. Cassandra
  2. CASSANDRA-4363

Cassandra 1.1.1 throws errors when trying the new CQL 3

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Cannot Reproduce
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:

      OSX 10.7.4 , java version "1.6.0_33" , Cassandra 1.1.1

      Description

      I downloaded Cassandra 1.1.1 and launched cqlsh under the version 3

      I tried to create a new column family:
      CREATE TABLE stats (
      pid blob,
      period int,
      targetid blob,
      sum counter,
      PRIMARY KEY (pid, period, targetid)
      );

      But I got this:
      Traceback (most recent call last): File "./cqlsh", line 908, in perform_statement self.cursor.execute(statement, decoder=decoder) File "./../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cursor.py", line 117, in execute response = self.handle_cql_execution_errors(doquery, prepared_q, compress) File "./../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cursor.py", line 132, in handle_cql_execution_errors return executor(*args, **kwargs) File "./../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cassandra/Cassandra.py", line 1583, in execute_cql_query self.send_execute_cql_query(query, compression) File "./../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cassandra/Cassandra.py", line 1593, in send_execute_cql_query self.oprot.trans.flush() File "./../lib/thrift-python-internal-only-0.7.0.zip/thrift/transport/TTransport.py", line 293, in flush self._trans.write(buf) File "./../lib/thrift-python-internal-only-0.7.0.zip/thrift/transport/TSocket.py", line 117, in write plus = self.handle.send(buff) error: [Errno 32] Broken pipe

      And on the server console:

      Error occurred during processing of message. java.lang.IllegalArgumentException at java.nio.Buffer.limit(Buffer.java:247) at org.apache.cassandra.db.marshal.AbstractCompositeType.getBytes(AbstractCompositeType.java:51) at org.apache.cassandra.db.marshal.AbstractCompositeType.getWithShortLength(AbstractCompositeType.java:60) at org.apache.cassandra.db.marshal.AbstractCompositeType.getString(AbstractCompositeType.java:140) at org.apache.cassandra.config.CFMetaData.validate(CFMetaData.java:929) at org.apache.cassandra.service.MigrationManager.announceNewColumnFamily(MigrationManager.java:131) at org.apache.cassandra.cql3.statements.CreateColumnFamilyStatement.announceMigration(CreateColumnFamilyStatement.java:83) at org.apache.cassandra.cql3.statements.SchemaAlteringStatement.execute(SchemaAlteringStatement.java:99) at org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:108) at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:121) at org.apache.cassandra.thrift.CassandraServer.execute_cql_query(CassandraServer.java:1237) at org.apache.cassandra.thrift.Cassandra$Processor$execute_cql_query.getResult(Cassandra.java:3542) at org.apache.cassandra.thrift.Cassandra$Processor$execute_cql_query.getResult(Cassandra.java:3530) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32) at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34) at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:680)

        Activity

        Hide
        Jonathan Ellis added a comment -

        Can you reproduce from a fresh install? If not, I wonder if you've dropped other CFs and are running into CASSANDRA-4307.

        Show
        Jonathan Ellis added a comment - Can you reproduce from a fresh install? If not, I wonder if you've dropped other CFs and are running into CASSANDRA-4307 .
        Hide
        Hussein Baghdadi added a comment -

        I deleted the whole cassandra installation and the data folder and started all over.
        Still got the same errors, both on the cqlsh and ./cassandra -f terminals

        Show
        Hussein Baghdadi added a comment - I deleted the whole cassandra installation and the data folder and started all over. Still got the same errors, both on the cqlsh and ./cassandra -f terminals
        Hide
        Jonathan Ellis added a comment -

        Hmm, so not 4307... but I can't reproduce on the cassandra-1.1 branch, so could have been fixed by something else. Can you give that a try?

        Show
        Jonathan Ellis added a comment - Hmm, so not 4307... but I can't reproduce on the cassandra-1.1 branch, so could have been fixed by something else. Can you give that a try?
        Show
        Jonathan Ellis added a comment - (git repo is http://git-wip-us.apache.org/repos/asf/cassandra.git )
        Hide
        Hussein Baghdadi added a comment -

        Forgive my ignorance but I don't get what you asked me to try.

        Show
        Hussein Baghdadi added a comment - Forgive my ignorance but I don't get what you asked me to try.
        Hide
        paul cannon added a comment -

        Jonathan means, are you able to check out the Cassandra source on the "cassandra-1.1" branch, and build and run it from there, and reproduce the problem?

        If you have no idea how to do that, it might be something like the following:

        (kill preexisting running cassandra)
        git clone http://git-wip-us.apache.org/repos/asf/cassandra.git
        cd cassandra
        git checkout -b cassandra-1.1 -t origin/cassandra-1.1
        ant clean jar
        bin/cassandra -f
        
        Show
        paul cannon added a comment - Jonathan means, are you able to check out the Cassandra source on the "cassandra-1.1" branch, and build and run it from there, and reproduce the problem? If you have no idea how to do that, it might be something like the following: (kill preexisting running cassandra) git clone http://git-wip-us.apache.org/repos/asf/cassandra.git cd cassandra git checkout -b cassandra-1.1 -t origin/cassandra-1.1 ant clean jar bin/cassandra -f
        Hide
        Hussein Baghdadi added a comment -

        I changed sum's type from counter to int and the error disappeared.
        However,
        describe table stats; ==> 'NoneType' object is not iterable

        Show
        Hussein Baghdadi added a comment - I changed sum's type from counter to int and the error disappeared. However, describe table stats; ==> 'NoneType' object is not iterable
        Hide
        Hussein Baghdadi added a comment -

        I tried to dump CQL3 shell and trying to create the tables with Python CQL library.
        The server side (Cassandra terminal) still throws the same exception I posted earlier and Python shell throws:

        Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/cql/cursor.py", line 117, in execute
        response = self.handle_cql_execution_errors(doquery, prepared_q, compress)
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/cql/cursor.py", line 132, in handle_cql_execution_errors
        return executor(*args, **kwargs)
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/cql/cassandra/Cassandra.py", line 1584, in execute_cql_query
        return self.recv_execute_cql_query()
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/cql/cassandra/Cassandra.py", line 1596, in recv_execute_cql_query
        (fname, mtype, rseqid) = self._iprot.readMessageBegin()
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/protocol/TBinaryProtocol.py", line 126, in readMessageBegin
        sz = self.readI32()
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/protocol/TBinaryProtocol.py", line 203, in readI32
        buff = self.trans.readAll(4)
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 58, in readAll
        chunk = self.read(sz-have)
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 272, in read
        self.readFrame()
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 276, in readFrame
        buff = self.__trans.readAll(4)
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 58, in readAll
        chunk = self.read(sz-have)
        File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/transport/TSocket.py", line 108, in read
        raise TTransportException(type=TTransportException.END_OF_FILE, message='TSocket read 0 bytes')
        thrift.transport.TTransport.TTransportException: TSocket read 0 bytes

        Show
        Hussein Baghdadi added a comment - I tried to dump CQL3 shell and trying to create the tables with Python CQL library. The server side (Cassandra terminal) still throws the same exception I posted earlier and Python shell throws: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/cql/cursor.py", line 117, in execute response = self.handle_cql_execution_errors(doquery, prepared_q, compress) File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/cql/cursor.py", line 132, in handle_cql_execution_errors return executor(*args, **kwargs) File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/cql/cassandra/Cassandra.py", line 1584, in execute_cql_query return self.recv_execute_cql_query() File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/cql/cassandra/Cassandra.py", line 1596, in recv_execute_cql_query (fname, mtype, rseqid) = self._iprot.readMessageBegin() File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/protocol/TBinaryProtocol.py", line 126, in readMessageBegin sz = self.readI32() File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/protocol/TBinaryProtocol.py", line 203, in readI32 buff = self.trans.readAll(4) File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 58, in readAll chunk = self.read(sz-have) File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 272, in read self.readFrame() File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 276, in readFrame buff = self.__trans.readAll(4) File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 58, in readAll chunk = self.read(sz-have) File "/Users/Chiron/my_new_env/lib/python2.7/site-packages/thrift/transport/TSocket.py", line 108, in read raise TTransportException(type=TTransportException.END_OF_FILE, message='TSocket read 0 bytes') thrift.transport.TTransport.TTransportException: TSocket read 0 bytes
        Hide
        Jonathan Ellis added a comment -

        Thanks, I think we're all on the page that 1.1.1 has this bug. But I cannot reproduce with the cassandra-1.1 branch, which will become 1.1.2. If you can test that for your satisfaction, great. Otherwise we can mark this fixed since I have already tried the 1.1 branch myself.

        Show
        Jonathan Ellis added a comment - Thanks, I think we're all on the page that 1.1.1 has this bug. But I cannot reproduce with the cassandra-1.1 branch, which will become 1.1.2. If you can test that for your satisfaction, great. Otherwise we can mark this fixed since I have already tried the 1.1 branch myself.
        Hide
        Hussein Baghdadi added a comment -

        I downloaded branch 1.1 and build it on my machine. Nothing changed, same errors. Maybe my Mac is haunted

        Show
        Hussein Baghdadi added a comment - I downloaded branch 1.1 and build it on my machine. Nothing changed, same errors. Maybe my Mac is haunted
        Hide
        Jonathan Ellis added a comment -

        Pavel, can you see if it reproduces for you?

        Show
        Jonathan Ellis added a comment - Pavel, can you see if it reproduces for you?
        Hide
        Pavel Yaskevich added a comment -

        I have compiled both cassandra-1.1.1 tag and cassandra-1.1 (both with realclean) and ran ./bin/cqlsh --cql3 with the create column family statement from this task's description on each and couldn't reproduce it. (CQL spec 3.0.0 | Thrift protocol 19.32.0)

        Show
        Pavel Yaskevich added a comment - I have compiled both cassandra-1.1.1 tag and cassandra-1.1 (both with realclean) and ran ./bin/cqlsh --cql3 with the create column family statement from this task's description on each and couldn't reproduce it. (CQL spec 3.0.0 | Thrift protocol 19.32.0)
        Hide
        Pavel Yaskevich added a comment -

        (cassandra-1.1.1 tag) I see that the named problem is in here CFMetaData.java:929 which is "throw new ConfigurationException("Cannot add a non counter column (" + comparator.getString(def.name) + ") in a counter column family");" and indeed default_validation_class on the "stats" CF created using statement from description is "CounterColumnType" but when I ran that statement it doesn't really create any column_metadata just a composite comparator so there is no error thrown on cassandra-1.1.1 tag nor cassandra-1.1 branch.

        Hussein, can you provide steps you do to reproduce the issue and out of the CLI 'describe' in your keyspace?

        Show
        Pavel Yaskevich added a comment - (cassandra-1.1.1 tag) I see that the named problem is in here CFMetaData.java:929 which is "throw new ConfigurationException("Cannot add a non counter column (" + comparator.getString(def.name) + ") in a counter column family");" and indeed default_validation_class on the "stats" CF created using statement from description is "CounterColumnType" but when I ran that statement it doesn't really create any column_metadata just a composite comparator so there is no error thrown on cassandra-1.1.1 tag nor cassandra-1.1 branch. Hussein, can you provide steps you do to reproduce the issue and out of the CLI 'describe' in your keyspace?
        Hide
        Hussein Baghdadi added a comment -

        I downloaded Cassandra 1.1.1 , configure it and run it : ./cassandra -f

        ./cqlsh --cql3

        CREATE KEYSPACE mks
        WITH strategy_class = 'org.apache.cassandra.locator.SimpleStrategy'
        AND strategy_options:replication_factor='1';

        Then:

        CREATE TABLE stats (
        pid blob,
        period int,
        targetid blob,
        sum counter,
        PRIMARY KEY (pid, period, targetid)
        );

        And I faced the exception I posted earlier.

        default@mks] describe;
        Keyspace: mks:
        Replication Strategy: org.apache.cassandra.locator.SimpleStrategy
        Durable Writes: true
        Options: [replication_factor:1]

        Show
        Hussein Baghdadi added a comment - I downloaded Cassandra 1.1.1 , configure it and run it : ./cassandra -f ./cqlsh --cql3 CREATE KEYSPACE mks WITH strategy_class = 'org.apache.cassandra.locator.SimpleStrategy' AND strategy_options:replication_factor='1'; Then: CREATE TABLE stats ( pid blob, period int, targetid blob, sum counter, PRIMARY KEY (pid, period, targetid) ); And I faced the exception I posted earlier. default@mks] describe; Keyspace: mks: Replication Strategy: org.apache.cassandra.locator.SimpleStrategy Durable Writes: true Options: [replication_factor:1]
        Hide
        Pavel Yaskevich added a comment -

        Just to be sure I have downloaded the apache-cassandra-1.1.1-bin.tar.gz from the http://cassandra.apache.org and ran ./bin/cassandra -f (previously wiping my /var/lib/cassandra directory) and input you create keyspace/columnfamily statements to the ./bin/cqlsh --cql3 (ran from the apache-cassandra-1.1.1 directory) and didn't receive any error also 'describe' from 'mks' indicates that indeed there is no column_metadata present in the 'stats' CF.

        Show
        Pavel Yaskevich added a comment - Just to be sure I have downloaded the apache-cassandra-1.1.1-bin.tar.gz from the http://cassandra.apache.org and ran ./bin/cassandra -f (previously wiping my /var/lib/cassandra directory) and input you create keyspace/columnfamily statements to the ./bin/cqlsh --cql3 (ran from the apache-cassandra-1.1.1 directory) and didn't receive any error also 'describe' from 'mks' indicates that indeed there is no column_metadata present in the 'stats' CF.

          People

          • Assignee:
            Pavel Yaskevich
            Reporter:
            Hussein Baghdadi
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development