diff --git a/CHANGES.txt b/CHANGES.txt index 71ce442cd4..4a7e174c1a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -32,6 +32,7 @@ * Fix streaming not holding ref when stream error (CASSANDRA-9295) * Fix canonical view returning early opened SSTables (CASSANDRA-9396) Merged from 2.0: + * Always mark sstable suspect when corrupted (CASSANDRA-9478) * Add database users and permissions to CQL3 documentation (CASSANDRA-7558) * Allow JVM_OPTS to be passed to standalone tools (CASSANDRA-5969) * Fix bad condition in RangeTombstoneList (CASSANDRA-9485) diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableIdentityIterator.java b/src/java/org/apache/cassandra/io/sstable/SSTableIdentityIterator.java index b784a7e691..498ad26527 100644 --- a/src/java/org/apache/cassandra/io/sstable/SSTableIdentityIterator.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTableIdentityIterator.java @@ -38,6 +38,9 @@ public class SSTableIdentityIterator implements Comparable 0) @@ -982,10 +1023,7 @@ public class SSTableReader extends SSTable implements SelfRefCounted 20); + raf.seek(new Random().nextInt((int)(raf.length() - 20))); + // We want to write something large enough that the corruption cannot get undetected + // (even without compression) + byte[] corruption = new byte[20]; + Arrays.fill(corruption, (byte)0xFF); + raf.write(corruption); + } finally { @@ -160,8 +166,7 @@ public class BlacklistingCompactionsTest extends SchemaLoader break; } - cfs.truncateBlocking(); - assertEquals(failures, sstablesToCorrupt); + assertEquals(sstablesToCorrupt, failures); } }