[
https://issues.apache.org/jira/browse/CASSANDRA-2104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12998925#comment-12998925
]
Sylvain Lebresne commented on CASSANDRA-2104:
---------------------------------------------
Thanks a lot Jonas, those new sstables were most useful.
Turns out the problem was that we were using the wrong comparator when
deserializing, so we were comparing the column using TimeUUIDType (instead of
UTF8Type).
Sadly, it could be that we were generating wrongly sorted on-disk superColumns.
However any compaction with the attached patch should fix that anyway.
> IndexOutOfBoundsException during lazy row compaction (using TimeUUID
> comparator)
> --------------------------------------------------------------------------------
>
> Key: CASSANDRA-2104
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2104
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Affects Versions: 0.7.0
> Reporter: Daniel Lundin
> Assignee: Sylvain Lebresne
> Fix For: 0.7.3
>
> Attachments:
> 0001-Use-the-right-comparator-when-deserializing-superCol.patch
>
>
> I ran into an exception when lazily compacting wide rows of TimeUUID columns.
> It seems to trigger when a row is larger than
> {{in_memory_compaction_limit_in_mb}}.
> Traceback:
> {noformat}
> INFO [CompactionExecutor:1] 2011-02-03 10:59:59,262 CompactionIterator.java
> (line 135) Compacting large row XXXXXXXXXXXXX (76999384 bytes) incrementally
> ERROR [CompactionExecutor:1] 2011-02-03 10:59:59,266
> AbstractCassandraDaemon.java (line 114) Fatal exception in thread T
> hread[CompactionExecutor:1,1,main]
> java.lang.IndexOutOfBoundsException
> at java.nio.Buffer.checkIndex(Buffer.java:514)
> at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:121)
> at
> org.apache.cassandra.db.marshal.TimeUUIDType.compareTimestampBytes(TimeUUIDType.java:56)
> at
> org.apache.cassandra.db.marshal.TimeUUIDType.compare(TimeUUIDType.java:45)
> at
> org.apache.cassandra.db.marshal.TimeUUIDType.compare(TimeUUIDType.java:29)
> at
> java.util.concurrent.ConcurrentSkipListMap$ComparableUsingComparator.compareTo(ConcurrentSkipListMap.java:606
> )
> at
> java.util.concurrent.ConcurrentSkipListMap.findPredecessor(ConcurrentSkipListMap.java:685)
> at
> java.util.concurrent.ConcurrentSkipListMap.doPut(ConcurrentSkipListMap.java:864)
> at
> java.util.concurrent.ConcurrentSkipListMap.putIfAbsent(ConcurrentSkipListMap.java:1893)
> at
> org.apache.cassandra.db.SuperColumn.addColumn(SuperColumn.java:170)
> at
> org.apache.cassandra.db.SuperColumn.putColumn(SuperColumn.java:195)
> at
> org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:221)
> at
> org.apache.cassandra.io.LazilyCompactedRow$LazyColumnIterator.reduce(LazilyCompactedRow.java:204)
> at
> org.apache.cassandra.io.LazilyCompactedRow$LazyColumnIterator.reduce(LazilyCompactedRow.java:185)
> at
> org.apache.cassandra.utils.ReducingIterator.computeNext(ReducingIterator.java:62)
> at
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:136)
> at
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:131)
> at
> com.google.common.collect.Iterators$7.computeNext(Iterators.java:604)
> at
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:136)
> at
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:131)
> at
> org.apache.cassandra.db.ColumnIndexer.serializeInternal(ColumnIndexer.java:76)
> at
> org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:50)
> at
> org.apache.cassandra.io.LazilyCompactedRow.<init>(LazilyCompactedRow.java:88)
> at
> org.apache.cassandra.io.CompactionIterator.getCompactedRow(CompactionIterator.java:137)
> at
> org.apache.cassandra.io.CompactionIterator.getReduced(CompactionIterator.java:108)
> at
> org.apache.cassandra.io.CompactionIterator.getReduced(CompactionIterator.java:43)
> at
> org.apache.cassandra.utils.ReducingIterator.computeNext(ReducingIterator.java:73)
> at
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:136)
> at
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:131)
> at
> org.apache.commons.collections.iterators.FilterIterator.setNextObject(FilterIterator.java:183)
> at
> org.apache.commons.collections.iterators.FilterIterator.hasNext(FilterIterator.java:94)
> at
> org.apache.cassandra.db.CompactionManager.doCompaction(CompactionManager.java:426)
> at
> org.apache.cassandra.db.CompactionManager$1.call(CompactionManager.java:122)
> at
> org.apache.cassandra.db.CompactionManager$1.call(CompactionManager.java:92)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> {noformat}
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira