cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonas Borgström (JIRA) <j...@apache.org>
Subject [jira] Commented: (CASSANDRA-2104) IndexOutOfBoundsException during lazy row compaction (using TimeUUID comparator)
Date Thu, 24 Feb 2011 11:44:38 GMT

    [ https://issues.apache.org/jira/browse/CASSANDRA-2104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12998808#comment-12998808
] 

Jonas Borgström commented on CASSANDRA-2104:
--------------------------------------------

I've done some more testing now and I'm ONLY able to reproduce this when using both super
columns and the TimeUUIDType column comparator.

After looking at the code TimeUUIDType seems to be the only marshaller that would actually
notice (throw an exception) if its compare() method was called with a partial value (1-15
bytes in the case of UUIDs).

So to me it looks like the incremental compactor sometimes sends corrupted/partial data to
the marshaller, at least for super column families. This corrupted/partial data is silently
ignored unless the TimeUUIDType marshaller is used.

> 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
>
>
> 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

       

Mime
View raw message