You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Alex Petrov (JIRA)" <ji...@apache.org> on 2016/08/04 08:17:20 UTC
[jira] [Created] (CASSANDRA-12378) Creating SASI index on
clustering column in presence of static column breaks writes
Alex Petrov created CASSANDRA-12378:
---------------------------------------
Summary: Creating SASI index on clustering column in presence of static column breaks writes
Key: CASSANDRA-12378
URL: https://issues.apache.org/jira/browse/CASSANDRA-12378
Project: Cassandra
Issue Type: Bug
Reporter: Alex Petrov
Priority: Critical
Steps to reproduce:
{code}
String simpleTable = "simple_table";
QueryProcessor.executeOnceInternal(String.format("CREATE TABLE IF NOT EXISTS %s.%s (pk int, ck1 int, ck2 int, s1 int static, reg1 int, PRIMARY KEY (pk, ck1));", KS_NAME, simpleTable));
QueryProcessor.executeOnceInternal(String.format("CREATE CUSTOM INDEX ON %s.%s (ck1) USING 'org.apache.cassandra.index.sasi.SASIIndex';", KS_NAME, simpleTable));
QueryProcessor.executeOnceInternal(String.format("INSERT INTO %s.%s (pk, ck1, ck2, s1, reg1) VALUES (1,1,1,1,1);", KS_NAME, simpleTable));
{code}
{code}
ERROR [MutationStage-2] 2016-08-04 09:59:08,054 StorageProxy.java:1351 - Failed to apply mutation locally : {}
java.lang.RuntimeException: 0 for ks: test, table: sasi
at org.apache.cassandra.db.ColumnFamilyStore.apply(ColumnFamilyStore.java:1371) ~[main/:na]
at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:555) ~[main/:na]
at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:425) ~[main/:na]
at org.apache.cassandra.db.Mutation.applyFuture(Mutation.java:215) ~[main/:na]
at org.apache.cassandra.db.Mutation.apply(Mutation.java:227) ~[main/:na]
at org.apache.cassandra.db.Mutation.apply(Mutation.java:241) ~[main/:na]
at org.apache.cassandra.service.StorageProxy$8.runMayThrow(StorageProxy.java:1345) ~[main/:na]
at org.apache.cassandra.service.StorageProxy$LocalMutationRunnable.run(StorageProxy.java:2520) [main/:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_91]
at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:162) [main/:na]
at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$LocalSessionFutureTask.run(AbstractLocalAwareExecutorService.java:134) [main/:na]
at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:109) [main/:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at org.apache.cassandra.db.AbstractBufferClusteringPrefix.get(AbstractBufferClusteringPrefix.java:55) ~[main/:na]
at org.apache.cassandra.index.sasi.conf.ColumnIndex.getValueOf(ColumnIndex.java:235) ~[main/:na]
at org.apache.cassandra.index.sasi.conf.ColumnIndex.index(ColumnIndex.java:104) ~[main/:na]
at org.apache.cassandra.index.sasi.SASIIndex$1.insertRow(SASIIndex.java:254) ~[main/:na]
at org.apache.cassandra.index.SecondaryIndexManager$WriteTimeTransaction.onInserted(SecondaryIndexManager.java:808) ~[main/:na]
at org.apache.cassandra.db.partitions.AtomicBTreePartition$RowUpdater.apply(AtomicBTreePartition.java:335) ~[main/:na]
at org.apache.cassandra.db.partitions.AtomicBTreePartition.addAllWithSizeDelta(AtomicBTreePartition.java:155) ~[main/:na]
at org.apache.cassandra.db.Memtable.put(Memtable.java:251) ~[main/:na]
at org.apache.cassandra.db.ColumnFamilyStore.apply(ColumnFamilyStore.java:1358) ~[main/:na]
... 12 common frames omitted
{code}
I would say this issue is critical, as if it occurs, the node will crash on commitlog replay, too (if it was restarted for unrelated reason).
However, the fix is relatively simple: check for static clustering in {{ColumnIndex}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)