Yep, already done: https://issues.apache.org/jira/browse/CASSANDRA-12877

On Fri, Nov 4, 2016 at 11:15 PM, Jonathan Haddad <j...@jonhaddad.com> wrote:

> Can you file a Jira for this? Would be good to make sure 3.10 doesn't get
> released with this bug.
> On Fri, Nov 4, 2016 at 6:11 PM Voytek Jarnot <voytek.jar...@gmail.com>
> wrote:
>
>> Thought I'd follow-up to myself, in case anyone else comes across this
>> problem.  I found a reasonably easy test case to reproduce the problem:
>>
>> This works in 3.9, but doesn't work in 3.10-snapshot:
>>
>> CREATE KEYSPACE vjtest WITH replication = {'class': 'SimpleStrategy',
>> 'replication_factor': '1'};
>> use vjtest ;
>> create table tester(id1 text, id2 text, id3 text, val1 text, primary
>> key((id1, id2), id3));
>> create custom index tester_idx_val1 on tester(val1) using
>> 'org.apache.cassandra.index.sasi.SASIIndex';
>> insert into tester(id1,id2,id3, val1) values ('1-1','1-2','1-3','asdf');
>> insert into tester(id1,id2,id3, val1) values ('1-1','1-2','2-3','asdf');
>> insert into tester(id1,id2,id3, val1) values ('1-1','1-2','3-3','asdf');
>> insert into tester(id1,id2,id3, val1) values ('1-1','1-2','4-3','asdf');
>> insert into tester(id1,id2,id3, val1) values ('1-1','1-2','5-3','asdf');
>> insert into tester(id1,id2,id3, val1) values ('1-1','1-2','6-3','asdf');
>> insert into tester(id1,id2,id3, val1) values ('1-1','1-2','7-3','asdf');
>> insert into tester(id1,id2,id3, val1) values ('1-1','1-2','8-3','asdf');
>> insert into tester(id1,id2,id3, val1) values ('1-1','1-2','9-3','asdf');
>>
>> That's it - when Cassandra tries to flush all hell breaks loose (well,
>> maaybe not, but an unhandled error gets logged).  Also, the index doesn't
>> actually work subsequently.
>>
>> On Fri, Nov 4, 2016 at 3:58 PM, Voytek Jarnot <voytek.jar...@gmail.com>
>> wrote:
>>
>> Wondering if anyone has encountered the same...
>>
>> Full story and stacktraces below, short version is that creating a SASI
>> index fails for me when running a 3.10-SNAPSHOT build. One caveat: creating
>> the index on an empty table doesn't fail; however, soon after I start
>> pumping data into the table similar problems occur.
>>
>> I created CASSANDRA-12877 for this, but am beginning to suspect it might
>> be related to CASSANDRA-11990.  The thing that's throwing me is that I
>> can't seem to duplicate this with a simple test table.
>>
>> Background:
>>
>> Ended up building/loading a 3.10-SNAPSHOT to try to get past
>> CASSANDRA-11670, CASSANDRA-12223, and CASSANDRA-12689.
>>
>> 1) built/installed 3.10-SNAPSHOT from git branch cassandra-3.X
>> 2) created keyspace (SimpleStrategy, RF 1)
>> 3) created table: (simplified version below, many more valX columns
>> present)
>>
>> CREATE TABLE test_table (
>>     id1 text,
>>     id2 text,
>>     id3 date,
>>     id4 timestamp,
>>     id5 text,
>>     val1 text,
>>     val2 text,
>>     val3 text,
>>     task_id text,
>>     val4 text,
>>     val5 text,
>>     PRIMARY KEY ((id1, id2), id3, id4, id5)
>> ) WITH CLUSTERING ORDER BY (id3 DESC, id4 DESC, id5 ASC)
>>
>> 4) created materialized view:
>>
>> CREATE MATERIALIZED VIEW test_table_by_task_id AS
>>     SELECT *
>>     FROM test_table
>>     WHERE id1 IS NOT NULL AND id2 IS NOT NULL AND id3 IS NOT NULL AND id4
>> IS NOT NULL AND id5 IS NOT NULL AND task_id IS NOT NULL
>>     PRIMARY KEY (task_id, id3, id4, id1, id2, id5)
>>     WITH CLUSTERING ORDER BY (id3 DESC, id4 DESC, id1 ASC, id2 ASC, id5
>> ASC)
>>
>> 5) inserted 27 million "rows" (i.e., unique values for id5)
>> 6) create index attempt
>>
>> create custom index idx_test_table_val5 on test_table(val5) using
>> 'org.apache.cassandra.index.sasi.SASIIndex';
>>
>> 7) no error in cqlsh, but system.log shows many of the following:
>>
>> INFO  [SASI-General:1] 2016-11-04 13:46:47,578
>> PerSSTableIndexWriter.java:277 - Flushed index segment
>> /mydir/cassandra/apache-cassandra-3.10-SNAPSHOT/data/
>> data/mykeyspace/test_table-133dd090a2b411e6b1bf6df2a1af06
>> f0/mc-149-big-SI_idx_test_table_val5.db_0, took 869 ms.
>> ERROR [SASI-General:1] 2016-11-04 13:46:47,584 CassandraDaemon.java:229 -
>> Exception in thread Thread[SASI-General:1,5,main]
>> java.lang.AssertionError: cannot have more than 8 overflow collisions per
>> leaf, but had: 12
>>     at org.apache.cassandra.index.sasi.disk.
>> AbstractTokenTreeBuilder$Leaf.createOverflowEntry(
>> AbstractTokenTreeBuilder.java:357) ~[apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.
>> AbstractTokenTreeBuilder$Leaf.createEntry(AbstractTokenTreeBuilder.java:346)
>> ~[apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.DynamicTokenTreeBuilder$
>> DynamicLeaf.serializeData(DynamicTokenTreeBuilder.java:180)
>> ~[apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.
>> AbstractTokenTreeBuilder$Leaf.serialize(AbstractTokenTreeBuilder.java:306)
>> ~[apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.AbstractTokenTreeBuilder.
>> write(AbstractTokenTreeBuilder.java:90) ~[apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder$
>> MutableDataBlock.flushAndClear(OnDiskIndexBuilder.java:629)
>> ~[apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder$
>> MutableLevel.flush(OnDiskIndexBuilder.java:446) ~[apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder$
>> MutableLevel.add(OnDiskIndexBuilder.java:433) ~[apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder.
>> addTerm(OnDiskIndexBuilder.java:207) ~[apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder.
>> finish(OnDiskIndexBuilder.java:293) ~[apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder.
>> finish(OnDiskIndexBuilder.java:258) ~[apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder.
>> finish(OnDiskIndexBuilder.java:241) ~[apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter$Index.
>> lambda$scheduleSegmentFlush$0(PerSSTableIndexWriter.java:267)
>> ~[apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>> ~[na:1.8.0_101]
>>     at 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>> ~[na:1.8.0_101]
>>     at 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>> [na:1.8.0_101]
>>     at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
>>
>> As well as some of these:
>>
>> ERROR [CompactionExecutor:3] 2016-11-04 13:49:13,142 DataTracker.java:168
>> - Can't open index file at /mydir/cassandra/apache-
>> cassandra-3.10-SNAPSHOT/data/data/mykeyspace/test_table-
>> 133dd090a2b411e6b1bf6df2a1af06f0/mc-300-big-SI_idx_test_table_val5.db,
>> skipping.
>> java.lang.IllegalArgumentException: position: 3472329188772431788,
>> limit: 8180
>>     at org.apache.cassandra.index.sasi.utils.MappedBuffer.
>> position(MappedBuffer.java:106) ~[apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at 
>> org.apache.cassandra.index.sasi.disk.OnDiskIndex.<init>(OnDiskIndex.java:147)
>> ~[apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at 
>> org.apache.cassandra.index.sasi.SSTableIndex.<init>(SSTableIndex.java:62)
>> ~[apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.index.sasi.conf.DataTracker.
>> getIndexes(DataTracker.java:150) [apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at 
>> org.apache.cassandra.index.sasi.conf.DataTracker.update(DataTracker.java:69)
>> [apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at 
>> org.apache.cassandra.index.sasi.conf.ColumnIndex.update(ColumnIndex.java:147)
>> [apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at 
>> org.apache.cassandra.index.sasi.SASIIndexBuilder.completeSSTable(SASIIndexBuilder.java:156)
>> [apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at 
>> org.apache.cassandra.index.sasi.SASIIndexBuilder.build(SASIIndexBuilder.java:125)
>> [apache-cassandra-3.10-SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at org.apache.cassandra.db.compaction.CompactionManager$
>> 14.run(CompactionManager.java:1583) [apache-cassandra-3.10-
>> SNAPSHOT.jar:3.10-SNAPSHOT]
>>     at 
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>> [na:1.8.0_101]
>>     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>> [na:1.8.0_101]
>>     at 
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>> [na:1.8.0_101]
>>     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>> [na:1.8.0_101]
>>     at 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>> [na:1.8.0_101]
>>     at 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>> [na:1.8.0_101]
>>     at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
>>
>>
>>

Reply via email to