Updated Branches: refs/heads/trunk 4b8897327 -> 82b920b66
Changing column_index_size_in_kb on different nodes might corrupt files patch by slebresne; reviewed by jbellis for CASSANDRA-5454 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/82b920b6 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/82b920b6 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/82b920b6 Branch: refs/heads/trunk Commit: 82b920b66e7bb551856551838e228adad043a685 Parents: 4b88973 Author: Sylvain Lebresne <sylv...@datastax.com> Authored: Mon Jul 1 09:40:08 2013 +0200 Committer: Sylvain Lebresne <sylv...@datastax.com> Committed: Mon Jul 1 09:40:08 2013 +0200 ---------------------------------------------------------------------- CHANGES.txt | 2 ++ .../org/apache/cassandra/db/ColumnIndex.java | 20 +++++--------------- .../cassandra/io/sstable/SSTableWriter.java | 2 +- 3 files changed, 8 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/82b920b6/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 66c8b1e..2520b23 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -67,6 +67,8 @@ * Fix ALTER RENAME post-5125 (CASSANDRA-5702) * Disallow renaming a 2ndary indexed column (CASSANDRA-5705) * Rename Table to Keyspace (CASSANDRA-5613) + * Ensure changing column_index_size_in_kb on different nodes don't corrupt the + sstable (CASSANDRA-5454) 1.2.7 http://git-wip-us.apache.org/repos/asf/cassandra/blob/82b920b6/src/java/org/apache/cassandra/db/ColumnIndex.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/ColumnIndex.java b/src/java/org/apache/cassandra/db/ColumnIndex.java index bcc5c2f..1501fcd 100644 --- a/src/java/org/apache/cassandra/db/ColumnIndex.java +++ b/src/java/org/apache/cassandra/db/ColumnIndex.java @@ -71,8 +71,7 @@ public class ColumnIndex public Builder(ColumnFamily cf, ByteBuffer key, - DataOutput output, - boolean fromStream) + DataOutput output) { assert cf != null; assert key != null; @@ -83,14 +82,7 @@ public class ColumnIndex this.indexOffset = rowHeaderSize(key, deletionInfo); this.result = new ColumnIndex(new ArrayList<IndexHelper.IndexInfo>()); this.output = output; - this.tombstoneTracker = fromStream ? null : new RangeTombstone.Tracker(cf.getComparator()); - } - - public Builder(ColumnFamily cf, - ByteBuffer key, - DataOutput output) - { - this(cf, key, output, false); + this.tombstoneTracker = new RangeTombstone.Tracker(cf.getComparator()); } /** @@ -113,7 +105,7 @@ public class ColumnIndex public int writtenAtomCount() { - return tombstoneTracker == null ? atomCount : atomCount + tombstoneTracker.writtenAtom(); + return atomCount + tombstoneTracker.writtenAtom(); } /** @@ -173,8 +165,7 @@ public class ColumnIndex firstColumn = column; startPosition = endPosition; // TODO: have that use the firstColumn as min + make sure we optimize that on read - if (tombstoneTracker != null) - endPosition += tombstoneTracker.writeOpenedMarker(firstColumn, output, atomSerializer); + endPosition += tombstoneTracker.writeOpenedMarker(firstColumn, output, atomSerializer); blockSize = 0; // We don't count repeated tombstone marker in the block size, to avoid a situation // where we wouldn't make any progress because a block is filled by said marker } @@ -196,8 +187,7 @@ public class ColumnIndex atomSerializer.serializeForSSTable(column, output); // TODO: Should deal with removing unneeded tombstones - if (tombstoneTracker != null) - tombstoneTracker.update(column); + tombstoneTracker.update(column); lastColumn = column; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/82b920b6/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java index 879c9bc..2f54e1a 100644 --- a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java @@ -221,7 +221,7 @@ public class SSTableWriter extends SSTable ColumnFamily cf = ArrayBackedSortedColumns.factory.create(metadata); cf.delete(deletionInfo); - ColumnIndex.Builder columnIndexer = new ColumnIndex.Builder(cf, key.key, dataFile.stream, true); + ColumnIndex.Builder columnIndexer = new ColumnIndex.Builder(cf, key.key, dataFile.stream); OnDiskAtom.Serializer atomSerializer = Column.onDiskSerializer(); try {