Lukasz Biedrycki created CASSANDRA-13669:
--------------------------------------------
Summary: Error when starting cassandra: Unable to make UUID from
'aa' (SASI index)
Key: CASSANDRA-13669
URL: https://issues.apache.org/jira/browse/CASSANDRA-13669
Project: Cassandra
Issue Type: Bug
Components: sasi
Environment: Tested on:
* macOS Sierra 10.12.5
* Ubuntu 14.04.5 LTS
Reporter: Lukasz Biedrycki
Fix For: 3.11.0, 3.9
Recently I experienced a problem that prevents me to restart cassandra.
I narrowed it down to SASI Index when added on uuid field.
Steps to reproduce:
1. start cassandra (./bin/cassandra -f)
2. create keyspace, table, index and add data:
{noformat}
CREATE KEYSPACE testkeyspace
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}
AND durable_writes = true;
use testkeyspace ;
CREATE TABLE testtable (
col1 uuid,
col2 uuid,
ts timeuuid,
col3 uuid,
PRIMARY KEY((col1, col2), ts) ) with clustering order by (ts desc);
CREATE CUSTOM INDEX col3_testtable_idx ON testtable(col3)
USING 'org.apache.cassandra.index.sasi.SASIIndex'
WITH OPTIONS = {'analyzer_class':
'org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer', 'mode': 'PREFIX'};
INSERT INTO testtable(col1, col2, ts, col3)
VALUES(898e0014-6161-11e7-b9b7-238ea83bd70b,
898e0014-6161-11e7-b9b7-238ea83bd70b,
now(), 898e0014-6161-11e7-b9b7-238ea83bd70b);
{noformat}
3. restart cassandra
It crashes with an error (sorry it's huge):
{noformat}
DEBUG 09:09:20 Writing Memtable-testtable@1005362073(0.075KiB serialized bytes,
1 ops, 0%/0% of on/off-heap limit), flushed range = (min(-9223372036854775808),
max(9223372036854775807)]
ERROR 09:09:20 Exception in thread Thread[PerDiskMemtableFlushWriter_0:1,5,main]
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
at
org.apache.cassandra.db.marshal.UUIDType.fromString(UUIDType.java:118)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer.hasNext(StandardAnalyzer.java:168)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter$Index.add(PerSSTableIndexWriter.java:208)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter.lambda$nextUnfilteredCluster$0(PerSSTableIndexWriter.java:132)
~[apache-cassandra-3.9.jar:3.9]
at java.util.Collections$SingletonSet.forEach(Collections.java:4767)
~[na:1.8.0_131]
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter.nextUnfilteredCluster(PerSSTableIndexWriter.java:119)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.ColumnIndex.lambda$add$1(ColumnIndex.java:233)
~[apache-cassandra-3.9.jar:3.9]
at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_131]
at org.apache.cassandra.db.ColumnIndex.add(ColumnIndex.java:233)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.ColumnIndex.buildRowIndex(ColumnIndex.java:107)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.io.sstable.format.big.BigTableWriter.append(BigTableWriter.java:169)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.io.sstable.SimpleSSTableMultiWriter.append(SimpleSSTableMultiWriter.java:48)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.Memtable$FlushRunnable.writeSortedContents(Memtable.java:458)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.Memtable$FlushRunnable.call(Memtable.java:493)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.Memtable$FlushRunnable.call(Memtable.java:380)
~[apache-cassandra-3.9.jar:3.9]
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
~[na:1.8.0_131]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
~[na:1.8.0_131]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[na:1.8.0_131]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
Exception (java.lang.RuntimeException) encountered during startup:
java.util.concurrent.ExecutionException: java.lang.RuntimeException:
java.util.concurrent.ExecutionException:
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
java.lang.RuntimeException: java.util.concurrent.ExecutionException:
java.lang.RuntimeException: java.util.concurrent.ExecutionException:
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
at org.apache.cassandra.utils.Throwables.maybeFail(Throwables.java:51)
ERROR 09:09:20 Exception encountered during startup
java.lang.RuntimeException: java.util.concurrent.ExecutionException:
java.lang.RuntimeException: java.util.concurrent.ExecutionException:
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
at org.apache.cassandra.utils.Throwables.maybeFail(Throwables.java:51)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.utils.FBUtilities.waitOnFutures(FBUtilities.java:391)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.commitlog.CommitLogReplayer.blockForWrites(CommitLogReplayer.java:168)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.commitlog.CommitLog.recoverFiles(CommitLog.java:188)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.commitlog.CommitLog.recoverSegmentsOnDisk(CommitLog.java:167)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:323)
[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:601)
[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:730)
[apache-cassandra-3.9.jar:3.9]
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException:
java.util.concurrent.ExecutionException:
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
~[na:1.8.0_131]
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
~[na:1.8.0_131]
at
org.apache.cassandra.utils.FBUtilities.waitOnFutures(FBUtilities.java:384)
~[apache-cassandra-3.9.jar:3.9]
... 6 common frames omitted
Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException:
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
at org.apache.cassandra.utils.Throwables.maybeFail(Throwables.java:51)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.utils.FBUtilities.waitOnFutures(FBUtilities.java:391)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.ColumnFamilyStore$Flush.flushMemtable(ColumnFamilyStore.java:1122)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.ColumnFamilyStore$Flush.run(ColumnFamilyStore.java:1084)
~[apache-cassandra-3.9.jar:3.9]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
~[na:1.8.0_131]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
~[na:1.8.0_131]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_131]
Caused by: java.util.concurrent.ExecutionException:
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
~[na:1.8.0_131]
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
~[na:1.8.0_131]
at
org.apache.cassandra.utils.FBUtilities.waitOnFutures(FBUtilities.java:384)
~[apache-cassandra-3.9.jar:3.9]
... 5 common frames omitted
Caused by: org.apache.cassandra.serializers.MarshalException: Unable to make
UUID from 'aa'
at
org.apache.cassandra.db.marshal.UUIDType.fromString(UUIDType.java:118)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer.hasNext(StandardAnalyzer.java:168)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter$Index.add(PerSSTableIndexWriter.java:208)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter.lambda$nextUnfilteredCluster$0(PerSSTableIndexWriter.java:132)
~[apache-cassandra-3.9.jar:3.9]
at java.util.Collections$SingletonSet.forEach(Collections.java:4767)
~[na:1.8.0_131]
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter.nextUnfilteredCluster(PerSSTableIndexWriter.java:119)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.ColumnIndex.lambda$add$1(ColumnIndex.java:233)
~[apache-cassandra-3.9.jar:3.9]
at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_131]
at org.apache.cassandra.db.ColumnIndex.add(ColumnIndex.java:233)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.ColumnIndex.buildRowIndex(ColumnIndex.java:107)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.io.sstable.format.big.BigTableWriter.append(BigTableWriter.java:169)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.io.sstable.SimpleSSTableMultiWriter.append(SimpleSSTableMultiWriter.java:48)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.Memtable$FlushRunnable.writeSortedContents(Memtable.java:458)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.Memtable$FlushRunnable.call(Memtable.java:493)
~[apache-cassandra-3.9.jar:3.9]
at
org.apache.cassandra.db.Memtable$FlushRunnable.call(Memtable.java:380)
~[apache-cassandra-3.9.jar:3.9]
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
~[na:1.8.0_131]
... 3 common frames omitted
at org.apache.cassandra.utils.FBUtilities.waitOnFutures(FBUtilities.java:391)
at
org.apache.cassandra.db.commitlog.CommitLogReplayer.blockForWrites(CommitLogReplayer.java:168)
at org.apache.cassandra.db.commitlog.CommitLog.recoverFiles(CommitLog.java:188)
at
org.apache.cassandra.db.commitlog.CommitLog.recoverSegmentsOnDisk(CommitLog.java:167)
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:323)
at
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:601)
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:730)
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException:
java.util.concurrent.ExecutionException:
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.cassandra.utils.FBUtilities.waitOnFutures(FBUtilities.java:384)
... 6 more
Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException:
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
at org.apache.cassandra.utils.Throwables.maybeFail(Throwables.java:51)
at org.apache.cassandra.utils.FBUtilities.waitOnFutures(FBUtilities.java:391)
at
org.apache.cassandra.db.ColumnFamilyStore$Flush.flushMemtable(ColumnFamilyStore.java:1122)
at
org.apache.cassandra.db.ColumnFamilyStore$Flush.run(ColumnFamilyStore.java:1084)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.ExecutionException:
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.cassandra.utils.FBUtilities.waitOnFutures(FBUtilities.java:384)
... 5 more
Caused by: org.apache.cassandra.serializers.MarshalException: Unable to make
UUID from 'aa'
at org.apache.cassandra.db.marshal.UUIDType.fromString(UUIDType.java:118)
at
org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer.hasNext(StandardAnalyzer.java:168)
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter$Index.add(PerSSTableIndexWriter.java:208)
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter.lambda$nextUnfilteredCluster$0(PerSSTableIndexWriter.java:132)
at java.util.Collections$SingletonSet.forEach(Collections.java:4767)
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter.nextUnfilteredCluster(PerSSTableIndexWriter.java:119)
at org.apache.cassandra.db.ColumnIndex.lambda$add$1(ColumnIndex.java:233)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.apache.cassandra.db.ColumnIndex.add(ColumnIndex.java:233)
at org.apache.cassandra.db.ColumnIndex.buildRowIndex(ColumnIndex.java:107)
at
org.apache.cassandra.io.sstable.format.big.BigTableWriter.append(BigTableWriter.java:169)
at
org.apache.cassandra.io.sstable.SimpleSSTableMultiWriter.append(SimpleSSTableMultiWriter.java:48)
at
org.apache.cassandra.db.Memtable$FlushRunnable.writeSortedContents(Memtable.java:458)
at org.apache.cassandra.db.Memtable$FlushRunnable.call(Memtable.java:493)
at org.apache.cassandra.db.Memtable$FlushRunnable.call(Memtable.java:380)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 3 more
{noformat}
When I do "nodetool flush" I also get:
{noformat}
$ ./bin/nodetool flush
objc[35941]: Class JavaLaunchHelper is implemented in both
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java
(0x1052a34c0) and
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/libinstrument.dylib
(0x10536b4e0). One of the two will be used. Which one is undefined.
error: Unable to make UUID from 'aa'
-- StackTrace --
org.apache.cassandra.serializers.MarshalException: Unable to make UUID from 'aa'
at org.apache.cassandra.db.marshal.UUIDType.fromString(UUIDType.java:118)
at
org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer.hasNext(StandardAnalyzer.java:168)
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter$Index.add(PerSSTableIndexWriter.java:208)
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter.lambda$nextUnfilteredCluster$0(PerSSTableIndexWriter.java:132)
at java.util.Collections$SingletonSet.forEach(Collections.java:4767)
at
org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter.nextUnfilteredCluster(PerSSTableIndexWriter.java:119)
at org.apache.cassandra.db.ColumnIndex.lambda$add$1(ColumnIndex.java:233)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.apache.cassandra.db.ColumnIndex.add(ColumnIndex.java:233)
at org.apache.cassandra.db.ColumnIndex.buildRowIndex(ColumnIndex.java:107)
at
org.apache.cassandra.io.sstable.format.big.BigTableWriter.append(BigTableWriter.java:169)
at
org.apache.cassandra.io.sstable.SimpleSSTableMultiWriter.append(SimpleSSTableMultiWriter.java:48)
at
org.apache.cassandra.db.Memtable$FlushRunnable.writeSortedContents(Memtable.java:458)
at org.apache.cassandra.db.Memtable$FlushRunnable.call(Memtable.java:493)
at org.apache.cassandra.db.Memtable$FlushRunnable.call(Memtable.java:380)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
{noformat}
Any ideas how to solve it?
I can keep col3 as text, I figured it out, but I already have bunch of data on
production and I basically can't do anything with any of nodes, because I won't
be able to start them again.
Thanks,
Lukasz
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]