[
https://issues.apache.org/jira/browse/CASSANDRA-4180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13650645#comment-13650645
]
Marcus Eriksson commented on CASSANDRA-4180:
--------------------------------------------
in general, lgtm, few issues;
sstable.getPosition(..) can return null in a couple of cases:
During repair:
{code}
ERROR [ValidationExecutor:2] 2013-05-07 10:43:24,875 CassandraDaemon.java (line
179) Exception in thread Thread[ValidationExecutor:2,1,main]
java.lang.NullPointerException
at
org.apache.cassandra.io.sstable.SSTableScanner.<init>(SSTableScanner.java:109)
at
org.apache.cassandra.io.sstable.SSTableReader.getScanner(SSTableReader.java:1038)
at
org.apache.cassandra.db.compaction.AbstractCompactionStrategy.getScanners(AbstractCompactionStrategy.java:214)
at
org.apache.cassandra.db.compaction.CompactionManager$ValidationCompactionIterable.<init>(CompactionManager.java:744)
at
org.apache.cassandra.db.compaction.CompactionManager.doValidationCompaction(CompactionManager.java:648)
at
org.apache.cassandra.db.compaction.CompactionManager.access$600(CompactionManager.java:64)
at
org.apache.cassandra.db.compaction.CompactionManager$8.call(CompactionManager.java:391)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
{code}
and scrub is not supposed to work until CASSANDRA-5429 right?:
{code}
INFO 09:26:43,968 Retrying from row index; data is 261 bytes starting at 295
WARN 09:26:43,969 Retry failed too. Skipping to next row (retry's stacktrace
follows)
java.lang.AssertionError: Interval min > max
at
org.apache.cassandra.utils.IntervalTree$IntervalNode.<init>(IntervalTree.java:250)
at org.apache.cassandra.utils.IntervalTree.<init>(IntervalTree.java:72)
at org.apache.cassandra.utils.IntervalTree.build(IntervalTree.java:81)
at org.apache.cassandra.db.DeletionInfo.add(DeletionInfo.java:179)
at
org.apache.cassandra.db.AbstractThreadUnsafeSortedColumns.delete(AbstractThreadUnsafeSortedColumns.java:44)
at org.apache.cassandra.db.ColumnFamily.addAtom(ColumnFamily.java:142)
at
org.apache.cassandra.db.ColumnFamilySerializer.deserializeColumnsFromSSTable(ColumnFamilySerializer.java:177)
at
org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:184)
at
org.apache.cassandra.db.compaction.PrecompactedRow.merge(PrecompactedRow.java:114)
at
org.apache.cassandra.db.compaction.PrecompactedRow.<init>(PrecompactedRow.java:98)
at
org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:220)
at
org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:226)
at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:204)
at
org.apache.cassandra.db.compaction.CompactionManager.scrubOne(CompactionManager.java:430)
at
org.apache.cassandra.db.compaction.CompactionManager.doScrub(CompactionManager.java:419)
at
org.apache.cassandra.db.compaction.CompactionManager.access$300(CompactionManager.java:64)
at
org.apache.cassandra.db.compaction.CompactionManager$3.perform(CompactionManager.java:234)
at
org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:220)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
WARN 09:26:43,972 Non-fatal error reading row (stacktrace follows)
java.io.IOError: java.io.IOException: Impossible row size 9223372034707292160
at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:170)
at
org.apache.cassandra.db.compaction.CompactionManager.scrubOne(CompactionManager.java:430)
at
org.apache.cassandra.db.compaction.CompactionManager.doScrub(CompactionManager.java:419)
at
org.apache.cassandra.db.compaction.CompactionManager.access$300(CompactionManager.java:64)
at
org.apache.cassandra.db.compaction.CompactionManager$3.perform(CompactionManager.java:234)
at
org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:220)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.io.IOException: Impossible row size 9223372034707292160
... 11 more
{code}
nits;
* version argument unused in IndexedSliceReader#setToRowStart
* LazilyCompactedRow comment obsolete
* compactionType unused param in SSTableWriter#createWriter
> Single-pass compaction for LCR
> ------------------------------
>
> Key: CASSANDRA-4180
> URL: https://issues.apache.org/jira/browse/CASSANDRA-4180
> Project: Cassandra
> Issue Type: Improvement
> Components: Core
> Reporter: Sylvain Lebresne
> Assignee: Jonathan Ellis
> Labels: compaction
> Fix For: 2.0
>
> Attachments: scrub-error.txt
>
>
> LazilyCompactedRow reads all data twice to compact a row which is obviously
> inefficient. The main reason we do that is to compute the row header.
> However, CASSANDRA-2319 have removed the main part of that row header. What
> remains is the size in bytes and the number of columns, but it should be
> relatively simple to remove those, which would then remove the need for the
> two-phase compaction.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira