Author: slebresne Date: Mon May 30 13:06:29 2011 New Revision: 1129154 URL: http://svn.apache.org/viewvc?rev=1129154&view=rev Log: Reset SSTII in EchoedRow constructor to avoid skipping row during compaction patch by slebresne; reviewed by jbellis for CASSANDRA-2653
Modified: cassandra/branches/cassandra-0.8.0/ (props changed) cassandra/branches/cassandra-0.8.0/CHANGES.txt cassandra/branches/cassandra-0.8.0/contrib/ (props changed) cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java (props changed) cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java (props changed) cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java (props changed) cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java (props changed) cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java (props changed) cassandra/branches/cassandra-0.8.0/src/java/org/apache/cassandra/db/CompactionManager.java cassandra/branches/cassandra-0.8.0/test/unit/org/apache/cassandra/db/CompactionsTest.java Propchange: cassandra/branches/cassandra-0.8.0/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon May 30 13:06:29 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7:1026516-1127140 +/cassandra/branches/cassandra-0.7:1026516-1127140,1129151 /cassandra/branches/cassandra-0.7.0:1053690-1055654 /cassandra/branches/cassandra-0.8:1102793,1102850,1103861,1103886,1103922,1125005,1125622 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689 Modified: cassandra/branches/cassandra-0.8.0/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.0/CHANGES.txt?rev=1129154&r1=1129153&r2=1129154&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8.0/CHANGES.txt (original) +++ cassandra/branches/cassandra-0.8.0/CHANGES.txt Mon May 30 13:06:29 2011 @@ -12,6 +12,7 @@ * avoid instantiating DatabaseDescriptor in JDBC (CASSANDRA-2694) * fix potential stack overflow during compaction (CASSANDRA-2626) * clone super columns to avoid modifying them during flush (CASSANDRA-2675) + * reset underlying iterator in EchoedRow constructor (CASSANDRA-2653) 0.8.0-rc1 Propchange: cassandra/branches/cassandra-0.8.0/contrib/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon May 30 13:06:29 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009 -/cassandra/branches/cassandra-0.7/contrib:1026516-1127140 +/cassandra/branches/cassandra-0.7/contrib:1026516-1127140,1129151 /cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654 /cassandra/branches/cassandra-0.8/contrib:1102793,1102850,1103861,1103886,1103922,1125005,1125622 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689 Propchange: cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon May 30 13:06:29 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1127140 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1127140,1129151 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654 /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1102793,1102850,1103861,1103886,1103922,1125005,1125622 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689 Propchange: cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon May 30 13:06:29 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1127140 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1127140,1129151 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654 /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1102793,1102850,1103861,1103886,1103922,1125005,1125622 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689 Propchange: cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon May 30 13:06:29 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1127140 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1127140,1129151 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654 /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1102793,1102850,1103861,1103886,1103922,1125005,1125622 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689 Propchange: cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon May 30 13:06:29 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1127140 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1127140,1129151 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654 /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1102793,1102850,1103861,1103886,1103922,1125005,1125622 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689 Propchange: cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon May 30 13:06:29 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1127140 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1127140,1129151 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654 /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1102793,1102850,1103861,1103886,1103922,1125005,1125622 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689 Modified: cassandra/branches/cassandra-0.8.0/src/java/org/apache/cassandra/db/CompactionManager.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.0/src/java/org/apache/cassandra/db/CompactionManager.java?rev=1129154&r1=1129153&r2=1129154&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8.0/src/java/org/apache/cassandra/db/CompactionManager.java (original) +++ cassandra/branches/cassandra-0.8.0/src/java/org/apache/cassandra/db/CompactionManager.java Mon May 30 13:06:29 2011 @@ -1310,6 +1310,8 @@ public class CompactionManager implement { super(row.getKey()); this.row = row; + // Reset SSTableIdentityIterator because we have not guarantee the filePointer hasn't moved since the Iterator was built + row.reset(); } public void write(DataOutput out) throws IOException Modified: cassandra/branches/cassandra-0.8.0/test/unit/org/apache/cassandra/db/CompactionsTest.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.0/test/unit/org/apache/cassandra/db/CompactionsTest.java?rev=1129154&r1=1129153&r2=1129154&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8.0/test/unit/org/apache/cassandra/db/CompactionsTest.java (original) +++ cassandra/branches/cassandra-0.8.0/test/unit/org/apache/cassandra/db/CompactionsTest.java Mon May 30 13:06:29 2011 @@ -153,4 +153,34 @@ public class CompactionsTest extends Cle buckets = CompactionManager.getBuckets(pairs, 10); // notice the min is 10 assertEquals(1, buckets.size()); } + @Test + public void testEchoedRow() throws IOException, ExecutionException, InterruptedException + { + // This test check that EchoedRow doesn't skipp rows: see CASSANDRA-2653 + + Table table = Table.open(TABLE1); + ColumnFamilyStore store = table.getColumnFamilyStore("Standard2"); + + // disable compaction while flushing + store.disableAutoCompaction(); + + // Insert 4 keys in two sstables. We need the sstables to have 2 rows + // at least to trigger what was causing CASSANDRA-2653 + for (int i=1; i < 5; i++) + { + DecoratedKey key = Util.dk(String.valueOf(i)); + RowMutation rm = new RowMutation(TABLE1, key.key); + rm.add(new QueryPath("Standard2", null, ByteBufferUtil.bytes(String.valueOf(i))), ByteBufferUtil.EMPTY_BYTE_BUFFER, i); + rm.apply(); + + if (i % 2 == 0) + store.forceBlockingFlush(); + } + + // Force compaction. Since each row is in only one sstable, we will be using EchoedRow. + CompactionManager.instance.performMajor(store); + + // Now assert we do have the two keys + assertEquals(4, Util.getRangeSlice(store).size()); + } }