On Mon, Oct 10, 2011 at 4:03 PM, Norman Maurer <norman.mau...@googlemail.com> wrote: > Hi there, > > did you alter the snappy-java version by mistake or was this part of > the commit ?
Sorry, that was intentional but I should probably not have been lazy and made a separate commit. I just updated the version referenced in the pom so that it matches what we are using. i.e, I haven't updated the lib, I've just made it so that user of maven central will get the 'right' version. -- Sylvain > > Bye, > Norman > > > 2011/10/10 <slebre...@apache.org>: >> Author: slebresne >> Date: Mon Oct 10 13:56:27 2011 >> New Revision: 1180970 >> >> URL: http://svn.apache.org/viewvc?rev=1180970&view=rev >> Log: >> Fix places where uncompressed sstable size is used in place of the >> compressed one. >> patch by slebresne; reviewed by jbellis for CASSANDRA-3338 >> >> Modified: >> cassandra/branches/cassandra-1.0.0/CHANGES.txt >> cassandra/branches/cassandra-1.0.0/build.xml >> >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java >> >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java >> >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java >> >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/sstable/SSTable.java >> >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/sstable/SSTableReader.java >> >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/util/CompressedSegmentedFile.java >> >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/util/SegmentedFile.java >> >> Modified: cassandra/branches/cassandra-1.0.0/CHANGES.txt >> URL: >> http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/CHANGES.txt?rev=1180970&r1=1180969&r2=1180970&view=diff >> ============================================================================== >> --- cassandra/branches/cassandra-1.0.0/CHANGES.txt (original) >> +++ cassandra/branches/cassandra-1.0.0/CHANGES.txt Mon Oct 10 13:56:27 2011 >> @@ -12,6 +12,8 @@ >> * run compaction and hinted handoff threads at MIN_PRIORITY (CASSANDRA-3308) >> * default hsha thrift server to cpu core count in rpc pool (CASSANDRA-3329) >> * add bin\daemon to binary tarball for Windows service (CASSANDRA-3331) >> + * Fix places where uncompressed size of sstables was use in place of the >> + compressed one (CASSANDRA-3338) >> Fixes merged from 0.8 below: >> * Fix tool .bat files when CASSANDRA_HOME contains spaces (CASSANDRA-3258) >> * Force flush of status table when removing/updating token (CASSANDRA-3243) >> >> Modified: cassandra/branches/cassandra-1.0.0/build.xml >> URL: >> http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/build.xml?rev=1180970&r1=1180969&r2=1180970&view=diff >> ============================================================================== >> --- cassandra/branches/cassandra-1.0.0/build.xml (original) >> +++ cassandra/branches/cassandra-1.0.0/build.xml Mon Oct 10 13:56:27 2011 >> @@ -350,7 +350,7 @@ url=${svn.entry.url}?pathrev=${svn.entry >> <license name="The Apache Software License, Version 2.0" >> url="http://www.apache.org/licenses/LICENSE-2.0.txt"/> >> <scm connection="${scm.connection}" >> developerConnection="${scm.developerConnection}" url="${scm.url}"/> >> <dependencyManagement> >> - <dependency groupId="org.xerial.snappy" artifactId="snappy-java" >> version="1.0.3.3"/> >> + <dependency groupId="org.xerial.snappy" artifactId="snappy-java" >> version="1.0.3"/> >> <dependency groupId="com.ning" artifactId="compress-lzf" >> version="0.8.4"/> >> <dependency groupId="com.google.guava" artifactId="guava" >> version="r08"/> >> <dependency groupId="commons-cli" artifactId="commons-cli" >> version="1.1"/> >> >> Modified: >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java >> URL: >> http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1180970&r1=1180969&r2=1180970&view=diff >> ============================================================================== >> --- >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java >> (original) >> +++ >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java >> Mon Oct 10 13:56:27 2011 >> @@ -915,7 +915,7 @@ public class ColumnFamilyStore implement >> long expectedFileSize = 0; >> for (SSTableReader sstable : sstables) >> { >> - long size = sstable.length(); >> + long size = sstable.onDiskLength(); >> expectedFileSize = expectedFileSize + size; >> } >> return expectedFileSize; >> @@ -930,9 +930,9 @@ public class ColumnFamilyStore implement >> SSTableReader maxFile = null; >> for (SSTableReader sstable : sstables) >> { >> - if (sstable.length() > maxSize) >> + if (sstable.onDiskLength() > maxSize) >> { >> - maxSize = sstable.length(); >> + maxSize = sstable.onDiskLength(); >> maxFile = sstable; >> } >> } >> >> Modified: >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java >> URL: >> http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java?rev=1180970&r1=1180969&r2=1180970&view=diff >> ============================================================================== >> --- >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java >> (original) >> +++ >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java >> Mon Oct 10 13:56:27 2011 >> @@ -472,7 +472,7 @@ public class CompactionManager implement >> boolean isCommutative = >> cfs.metadata.getDefaultValidator().isCommutative(); >> >> // Calculate the expected compacted filesize >> - String compactionFileLocation = >> cfs.table.getDataFileLocation(sstable.length()); >> + String compactionFileLocation = >> cfs.table.getDataFileLocation(sstable.onDiskLength()); >> if (compactionFileLocation == null) >> throw new IOException("disk full"); >> int expectedBloomFilterSize = >> Math.max(DatabaseDescriptor.getIndexInterval(), >> @@ -765,8 +765,8 @@ public class CompactionManager implement >> >> String format = "Cleaned up to %s. %,d to %,d (~%d%% of >> original) bytes for %,d keys. Time: %,dms."; >> long dTime = System.currentTimeMillis() - startTime; >> - long startsize = sstable.length(); >> - long endsize = newSstable.length(); >> + long startsize = sstable.onDiskLength(); >> + long endsize = newSstable.onDiskLength(); >> double ratio = (double)endsize / (double)startsize; >> logger.info(String.format(format, writer.getFilename(), >> startsize, endsize, (int)(ratio*100), totalkeysWritten, dTime)); >> } >> >> Modified: >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java >> URL: >> http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java?rev=1180970&r1=1180969&r2=1180970&view=diff >> ============================================================================== >> --- >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java >> (original) >> +++ >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java >> Mon Oct 10 13:56:27 2011 >> @@ -100,7 +100,7 @@ public class SizeTieredCompactionStrateg >> { >> List<Pair<SSTableReader, Long>> tableLengthPairs = new >> ArrayList<Pair<SSTableReader, Long>>(); >> for(SSTableReader table: collection) >> - tableLengthPairs.add(new Pair<SSTableReader, Long>(table, >> table.length())); >> + tableLengthPairs.add(new Pair<SSTableReader, Long>(table, >> table.onDiskLength())); >> return tableLengthPairs; >> } >> >> >> Modified: >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/sstable/SSTable.java >> URL: >> http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/sstable/SSTable.java?rev=1180970&r1=1180969&r2=1180970&view=diff >> ============================================================================== >> --- >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/sstable/SSTable.java >> (original) >> +++ >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/sstable/SSTable.java >> Mon Oct 10 13:56:27 2011 >> @@ -257,7 +257,7 @@ public abstract class SSTable >> long sum = 0; >> for (SSTableReader sstable : sstables) >> { >> - sum += sstable.length(); >> + sum += sstable.onDiskLength(); >> } >> return sum; >> } >> >> Modified: >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/sstable/SSTableReader.java >> URL: >> http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/sstable/SSTableReader.java?rev=1180970&r1=1180969&r2=1180970&view=diff >> ============================================================================== >> --- >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/sstable/SSTableReader.java >> (original) >> +++ >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/sstable/SSTableReader.java >> Mon Oct 10 13:56:27 2011 >> @@ -555,7 +555,7 @@ public class SSTableReader extends SSTab >> long right = getPosition(new DecoratedKey(range.right, null), >> Operator.GT); >> if (right == -1 || Range.isWrapAround(range.left, range.right)) >> // right is past the end of the file, or it wraps >> - right = length(); >> + right = uncompressedLength(); >> if (left == right) >> // empty range >> continue; >> @@ -669,13 +669,25 @@ public class SSTableReader extends SSTab >> } >> >> /** >> - * @return The length in bytes of the data file for this SSTable. >> + * @return The length in bytes of the data for this SSTable. For >> + * compressed files, this is not the same thing as the on disk size (see >> + * onDiskLength()) >> */ >> - public long length() >> + public long uncompressedLength() >> { >> return dfile.length; >> } >> >> + /** >> + * @return The length in bytes of the on disk size for this SSTable. For >> + * compressed files, this is not the same thing as the data length (see >> + * length()) >> + */ >> + public long onDiskLength() >> + { >> + return dfile.onDiskLength; >> + } >> + >> public boolean acquireReference() >> { >> while (true) >> >> Modified: >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/util/CompressedSegmentedFile.java >> URL: >> http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/util/CompressedSegmentedFile.java?rev=1180970&r1=1180969&r2=1180970&view=diff >> ============================================================================== >> --- >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/util/CompressedSegmentedFile.java >> (original) >> +++ >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/util/CompressedSegmentedFile.java >> Mon Oct 10 13:56:27 2011 >> @@ -30,7 +30,7 @@ public class CompressedSegmentedFile ext >> >> public CompressedSegmentedFile(String path, CompressionMetadata metadata) >> { >> - super(path, metadata.dataLength); >> + super(path, metadata.dataLength, metadata.compressedFileLength); >> this.metadata = metadata; >> } >> >> >> Modified: >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/util/SegmentedFile.java >> URL: >> http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/util/SegmentedFile.java?rev=1180970&r1=1180969&r2=1180970&view=diff >> ============================================================================== >> --- >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/util/SegmentedFile.java >> (original) >> +++ >> cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/io/util/SegmentedFile.java >> Mon Oct 10 13:56:27 2011 >> @@ -42,13 +42,23 @@ public abstract class SegmentedFile >> public final String path; >> public final long length; >> >> + // This differs from length for compressed files (but we still need >> length for >> + // SegmentIterator because offsets in the file are relative to the >> uncompressed size) >> + public final long onDiskLength; >> + >> /** >> * Use getBuilder to get a Builder to construct a SegmentedFile. >> */ >> SegmentedFile(String path, long length) >> { >> + this(path, length, length); >> + } >> + >> + protected SegmentedFile(String path, long length, long onDiskLength) >> + { >> this.path = path; >> this.length = length; >> + this.onDiskLength = onDiskLength; >> } >> >> /** >> >> >> >