[ 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