diff --git a/CHANGES.txt b/CHANGES.txt index 2b5bf79550..578da355e4 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -6,15 +6,10 @@ * Remove leveled json manifest migration code (CASSANDRA-5996) -2.0.2 +2.0.1 * Improve memory use defaults (CASSANDRA-5069) * Make ThriftServer more easlly extensible (CASSANDRA-6058) * Remove Hadoop dependency from ITransportFactory (CASSANDRA-6062) -Merged from 1.2: - * Allow cache-keys-to-save to be set at runtime (CASSANDRA-5980) - - -2.0.1 * add file_cache_size_in_mb setting (CASSANDRA-5661) * Improve error message when yaml contains invalid properties (CASSANDRA-5958) * Improve leveled compaction's ability to find non-overlapping L0 compactions @@ -44,6 +39,7 @@ Merged from 1.2: * Fix validation of IN clauses with 2ndary indexes (CASSANDRA-6050) * Support named bind variables in CQL (CASSANDRA-6033) Merged from 1.2: + * Allow cache-keys-to-save to be set at runtime (CASSANDRA-5980) * Avoid second-guessing out-of-space state (CASSANDRA-5605) * Tuning knobs for dealing with large blobs and many CFs (CASSANDRA-5982) * (Hadoop) Fix CQLRW for thrift tables (CASSANDRA-6002) diff --git a/build.xml b/build.xml index d0bb1c512e..5be37ca148 100644 --- a/build.xml +++ b/build.xml @@ -355,7 +355,7 @@ - + @@ -456,7 +456,7 @@ - + diff --git a/lib/thrift-server-0.3.0.jar b/lib/thrift-server-0.3.2.jar similarity index 71% rename from lib/thrift-server-0.3.0.jar rename to lib/thrift-server-0.3.2.jar index 3c93bb988f..5b03c4dc7c 100644 Binary files a/lib/thrift-server-0.3.0.jar and b/lib/thrift-server-0.3.2.jar differ diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java index e0c096fdcf..4da579caa7 100644 --- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java @@ -160,8 +160,17 @@ public class SSTableReader extends SSTable implements Closeable partitioner, System.currentTimeMillis(), sstableMetadata); - // don't save index summary to disk if we needed to build one - sstable.load(false, false); + + // special implementation of load to use non-pooled SegmentedFile builders + SegmentedFile.Builder ibuilder = new BufferedSegmentedFile.Builder(); + SegmentedFile.Builder dbuilder = sstable.compression + ? new CompressedSegmentedFile.Builder() + : new BufferedSegmentedFile.Builder(); + if (!loadSummary(sstable, ibuilder, dbuilder, sstable.metadata)) + sstable.buildSummary(false, ibuilder, dbuilder, false); + sstable.ifile = ibuilder.complete(sstable.descriptor.filenameFor(Component.PRIMARY_INDEX)); + sstable.dfile = dbuilder.complete(sstable.descriptor.filenameFor(Component.DATA)); + sstable.bf = FilterFactory.AlwaysPresent; return sstable; } @@ -411,7 +420,6 @@ public class SSTableReader extends SSTable implements Closeable ? SegmentedFile.getCompressedBuilder() : SegmentedFile.getBuilder(DatabaseDescriptor.getDiskAccessMode()); - boolean summaryLoaded = loadSummary(this, ibuilder, dbuilder, metadata); if (recreateBloomFilter || !summaryLoaded) buildSummary(recreateBloomFilter, ibuilder, dbuilder, summaryLoaded); diff --git a/src/java/org/apache/cassandra/io/util/BufferedSegmentedFile.java b/src/java/org/apache/cassandra/io/util/BufferedSegmentedFile.java index 49972c81fb..790b42b99b 100644 --- a/src/java/org/apache/cassandra/io/util/BufferedSegmentedFile.java +++ b/src/java/org/apache/cassandra/io/util/BufferedSegmentedFile.java @@ -19,7 +19,7 @@ package org.apache.cassandra.io.util; import java.io.File; -public class BufferedSegmentedFile extends PoolingSegmentedFile +public class BufferedSegmentedFile extends SegmentedFile { public BufferedSegmentedFile(String path, long length) { @@ -28,20 +28,11 @@ public class BufferedSegmentedFile extends PoolingSegmentedFile public static class Builder extends SegmentedFile.Builder { - /** - * Adds a position that would be a safe place for a segment boundary in the file. For a block/row based file - * format, safe boundaries are block/row edges. - * @param boundary The absolute position of the potential boundary in the file. - */ public void addPotentialBoundary(long boundary) { // only one segment in a standard-io file } - /** - * Called after all potential boundaries have been added to apply this Builder to a concrete file on disk. - * @param path The file on disk. - */ public SegmentedFile complete(String path) { long length = new File(path).length(); @@ -49,8 +40,14 @@ public class BufferedSegmentedFile extends PoolingSegmentedFile } } - protected RandomAccessReader createReader(String path) + public FileDataInput getSegment(long position) + { + RandomAccessReader reader = RandomAccessReader.open(new File(path)); + reader.seek(position); + return reader; + } + + public void cleanup() { - return RandomAccessReader.open(new File(path), this); } }