[
https://issues.apache.org/jira/browse/CASSANDRA-1299?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jonathan Ellis updated CASSANDRA-1299:
--------------------------------------
Attachment: 1299.txt
CASSANDRA-270 exposed a long-standing bug in SSTableUtils where it was writing
garbage data while bypassing memtable to assemble its own SSTables by hand. It
needs to limit the data passed to SSTableWriter to the actual valid data in the
DataOutputBuffer. Attached is a patch that takes the simplest approach to this
by copying out only the valid data into a separate byte[]. Ideally I'd prefer
to remove the append(key, byte[]) method entirely but that will have to wait
until we have a BMT replacement.
> EOFException in LazilyCompactedRow
> ----------------------------------
>
> Key: CASSANDRA-1299
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1299
> Project: Cassandra
> Issue Type: Bug
> Reporter: Stu Hood
> Assignee: Jonathan Ellis
> Priority: Critical
> Fix For: 0.7
>
> Attachments: 1299.txt
>
>
> Post CASSANDRA-270, 'ant clean long-test' fails with an EOFException in
> LazilyCompactedRow.
> {code}java.io.IOError: java.io.EOFException
> at
> org.apache.cassandra.io.sstable.SSTableIdentityIterator.next(SSTableIdentityIterator.java:103)
> at
> org.apache.cassandra.io.sstable.SSTableIdentityIterator.next(SSTableIdentityIterator.java:32)
> at
> org.apache.commons.collections.iterators.CollatingIterator.set(CollatingIterator.java:284)
> at
> org.apache.commons.collections.iterators.CollatingIterator.least(CollatingIterator.java:326)
> at
> org.apache.commons.collections.iterators.CollatingIterator.next(CollatingIterator.java:230)
> at
> org.apache.cassandra.utils.ReducingIterator.computeNext(ReducingIterator.java:68)
> 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:62)
> at
> org.apache.cassandra.io.CompactionIterator.getCompactedRow(CompactionIterator.java:135)
> at
> org.apache.cassandra.io.CompactionIterator.getReduced(CompactionIterator.java:107)
> at
> org.apache.cassandra.io.CompactionIterator.getReduced(CompactionIterator.java:46)
> 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:334)
> at
> org.apache.cassandra.db.LongCompactionSpeedTest.testCompaction(LongCompactionSpeedTest.java:101)
> at
> org.apache.cassandra.db.LongCompactionSpeedTest.testCompactionWide(LongCompactionSpeedTest.java:49)
> Caused by: java.io.EOFException
> at java.io.RandomAccessFile.readInt(RandomAccessFile.java:725)
> at java.io.RandomAccessFile.readLong(RandomAccessFile.java:758)
> at
> org.apache.cassandra.db.TimestampClockSerializer.deserialize(TimestampClock.java:128)
> at
> org.apache.cassandra.db.TimestampClockSerializer.deserialize(TimestampClock.java:119)
> at
> org.apache.cassandra.db.ColumnSerializer.deserialize(ColumnSerializer.java:90)
> at
> org.apache.cassandra.db.ColumnSerializer.deserialize(ColumnSerializer.java:31)
> at
> org.apache.cassandra.io.sstable.SSTableIdentityIterator.next(SSTableIdentityIterator.java:99)
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.