Malte Pickhan created CASSANDRA-13051:
-----------------------------------------
Summary: SSTable Corruption - Partition Key fails assertion
Key: CASSANDRA-13051
URL: https://issues.apache.org/jira/browse/CASSANDRA-13051
Project: Cassandra
Issue Type: Bug
Environment: Cassandra 3.7
Single DC
5 Nodes
RF 3
NetworkTopologyStrategy
OS: Ubuntu
Reporter: Malte Pickhan
When running a repair the following exception is triggered:
{code}
java.lang.AssertionError: null
at
org.apache.cassandra.db.marshal.TimeUUIDType.compareCustom(TimeUUIDType.java:65)
~[apache-cassandra-3.7.jar:3.7]
at org.apache.cassandra.db.marshal.AbstractType.compare(AbstractType.java:157)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.dht.LocalPartitioner$LocalToken.compareTo(LocalPartitioner.java:139)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.dht.LocalPartitioner$LocalToken.compareTo(LocalPartitioner.java:120)
~[apache-cassandra-3.7.jar:3.7]
at org.apache.cassandra.db.DecoratedKey.compareTo(DecoratedKey.java:85)
~[apache-cassandra-3.7.jar:3.7]
at org.apache.cassandra.db.DecoratedKey.compareTo(DecoratedKey.java:39)
~[apache-cassandra-3.7.jar:3.7]
at
java.util.concurrent.ConcurrentSkipListMap.cpr(ConcurrentSkipListMap.java:655)
~[na:1.8.0_91]
at
java.util.concurrent.ConcurrentSkipListMap.doGet(ConcurrentSkipListMap.java:794)
~[na:1.8.0_91]
at
java.util.concurrent.ConcurrentSkipListMap.get(ConcurrentSkipListMap.java:1546)
~[na:1.8.0_91]
at org.apache.cassandra.db.Memtable.getPartition(Memtable.java:355)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.compaction.CompactionController.maxPurgeableTimestamp(CompactionController.java:221)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.compaction.CompactionIterator$Purger.getMaxPurgeableTimestamp(CompactionIterator.java:304)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.partitions.PurgeFunction.lambda$new$0(PurgeFunction.java:38)
~[apache-cassandra-3.7.jar:3.7]
at org.apache.cassandra.db.DeletionPurger.shouldPurge(DeletionPurger.java:33)
~[apache-cassandra-3.7.jar:3.7]
at org.apache.cassandra.db.rows.BTreeRow.purge(BTreeRow.java:386)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.partitions.PurgeFunction.applyToRow(PurgeFunction.java:88)
~[apache-cassandra-3.7.jar:3.7]
at org.apache.cassandra.db.transform.BaseRows.hasNext(BaseRows.java:120)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.transform.UnfilteredRows.isEmpty(UnfilteredRows.java:38)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.partitions.PurgeFunction.applyToPartition(PurgeFunction.java:64)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.partitions.PurgeFunction.applyToPartition(PurgeFunction.java:24)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.transform.BasePartitions.hasNext(BasePartitions.java:76)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.compaction.CompactionIterator.hasNext(CompactionIterator.java:226)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.compaction.CompactionTask.runMayThrow(CompactionTask.java:182)
~[apache-cassandra-3.7.jar:3.7]
at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.compaction.CompactionTask.executeInternal(CompactionTask.java:82)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.compaction.AbstractCompactionTask.execute(AbstractCompactionTask.java:60)
~[apache-cassandra-3.7.jar:3.7]
at
org.apache.cassandra.db.compaction.CompactionManager$BackgroundCompactionCandidate.run(CompactionManager.java:264)
~[apache-cassandra-3.7.jar:3.7]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
~[na:1.8.0_91]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_91]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
~[na:1.8.0_91]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[na:1.8.0_91]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
{code}
One thing which would be nice is, to provide an actual message in the assertion
in order to avoid this "null" string. Furthermore it would be great to provide
the data which caused the assertion to fail.
Actually I have no clue, how we triggered this, but I will see if I can find
out something...
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)