[ 
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

Reply via email to