[ https://issues.apache.org/jira/browse/CASSANDRA-8786?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14318416#comment-14318416 ]
Mathijs Vogelzang commented on CASSANDRA-8786: ---------------------------------------------- The tables were probably originally created on version 1.x We've only tried with cqlsh. I've just done a "DESCRIBE" in cassandra-cli on our production table and the new one and the most suspicious difference is that on the production (non-working) table, one column name is listed like this: {noformat} (...) Column Name: account_id Validation Class: org.apache.cassandra.db.marshal.LongType Index Name: idx_accid Index Type: KEYS Column Name: next_column_name (...){noformat} and on the newly created development table (the one without problems) it is {noformat} (...) Column Name: account_id Validation Class: org.apache.cassandra.db.marshal.LongType Index Name: idx_accid Index Type: KEYS Index Options: {} Column Name: next_column_name (...){noformat} (Other minor differences are speculative retry NONE vs 99.0PERCENTILE, Read repair chance 0 vs 1 and Bloom filter FP chance default vs. 0.01, but the "Index Options" seems closer to where the problem probably lies to me) > NullPointerException in ColumnDefinition.hasIndexOption > ------------------------------------------------------- > > Key: CASSANDRA-8786 > URL: https://issues.apache.org/jira/browse/CASSANDRA-8786 > Project: Cassandra > Issue Type: Bug > Components: Core > Environment: Cassandra 2.1.2 > Reporter: Mathijs Vogelzang > Fix For: 2.1.4 > > > We have a Cassandra cluster that we've been using through many upgrades, and > thus most of our column families have originally been created by Thrift. We > are on Cassandra 2.1.2 now. > We've now ported most of our code to use CQL, and our code occasionally tries > to recreate tables with "IF NOT EXISTS" to work properly on development / > testing environments. > When we issue the CQL statement "CREATE INDEX IF NOT EXISTS index ON > "tableName" (accountId)" (this index does exist on that table already), we > get a {{DriverInternalError: An unexpected error occurred server side on > cass_host/xx.xxx.xxx.xxx:9042: java.lang.NullPointerException}} > The error on the server is: > {noformat} > java.lang.NullPointerException: null > at > org.apache.cassandra.config.ColumnDefinition.hasIndexOption(ColumnDefinition.java:489) > ~[apache-cassandra-2.1.2.jar:2.1.2] > at > org.apache.cassandra.cql3.statements.CreateIndexStatement.validate(CreateIndexStatement.java:87) > ~[apache-cassandra-2.1.2.jar:2.1.2] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:224) > ~[apache-cassandra-2.1.2.jar:2.1.2] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:248) > ~[apache-cassandra-2.1.2.jar:2.1.2] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:119) > ~[apache-cassandra-2.1.2.jar:2.1.2] > {noformat} > This happens every time we run this CQL statement. We've tried to reproduce > it in a test cassandra cluster by creating the table according to the exact > "DESCRIBE TABLE" specification, but then this NullPointerException doesn't > happon upon the CREATE INDEX one. So it seems that the tables on our > production cluster (that were originally created through thrift) are still > subtly different schema-wise then a freshly created table according to the > same creation statement. -- This message was sent by Atlassian JIRA (v6.3.4#6332)