You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2010/10/18 19:40:51 UTC
svn commit: r1023919 - in
/cassandra/trunk/src/java/org/apache/cassandra/io/sstable: SSTable.java
SSTableReader.java SSTableWriter.java
Author: jbellis
Date: Mon Oct 18 17:40:51 2010
New Revision: 1023919
URL: http://svn.apache.org/viewvc?rev=1023919&view=rev
Log:
avoid null SSTable stat histograms
patch by jbellis; reviewed by brandonwilliams for CASSANDRA-1620
Modified:
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTable.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTable.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTable.java?rev=1023919&r1=1023918&r2=1023919&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTable.java Mon Oct 18 17:40:51 2010
@@ -68,8 +68,8 @@ public abstract class SSTable
public final CFMetaData metadata;
public final IPartitioner partitioner;
- protected EstimatedHistogram estimatedRowSize = new EstimatedHistogram(150);
- protected EstimatedHistogram estimatedColumnCount = new EstimatedHistogram(114);
+ protected final EstimatedHistogram estimatedRowSize;
+ protected final EstimatedHistogram estimatedColumnCount;
protected SSTable(Descriptor descriptor, CFMetaData metadata, IPartitioner partitioner)
{
@@ -78,10 +78,27 @@ public abstract class SSTable
protected SSTable(Descriptor descriptor, Set<Component> components, CFMetaData metadata, IPartitioner partitioner)
{
+ this(descriptor, components, metadata, partitioner, defaultRowHistogram(), defaultColumnHistogram());
+ }
+
+ static EstimatedHistogram defaultColumnHistogram()
+ {
+ return new EstimatedHistogram(114);
+ }
+
+ static EstimatedHistogram defaultRowHistogram()
+ {
+ return new EstimatedHistogram(150);
+ }
+
+ protected SSTable(Descriptor descriptor, Set<Component> components, CFMetaData metadata, IPartitioner partitioner, EstimatedHistogram rowSizes, EstimatedHistogram columnCounts)
+ {
this.descriptor = descriptor;
this.components = components;
this.metadata = metadata;
this.partitioner = partitioner;
+ estimatedRowSize = rowSizes;
+ estimatedColumnCount = columnCounts;
}
public EstimatedHistogram getEstimatedRowSize()
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java?rev=1023919&r1=1023918&r2=1023919&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java Mon Oct 18 17:40:51 2010
@@ -136,18 +136,6 @@ public class SSTableReader extends SSTab
return count;
}
- private void loadStatistics(Descriptor desc) throws IOException
- {
- if (!new File(desc.filenameFor(SSTable.COMPONENT_STATS)).exists())
- return;
- if (logger.isDebugEnabled())
- logger.debug("Load statistics for " + desc);
- DataInputStream dis = new DataInputStream(new FileInputStream(desc.filenameFor(SSTable.COMPONENT_STATS)));
- estimatedRowSize = EstimatedHistogram.serializer.deserialize(dis);
- estimatedColumnCount = EstimatedHistogram.serializer.deserialize(dis);
- dis.close();
- }
-
public static SSTableReader open(Descriptor desc) throws IOException
{
Set<Component> components = SSTable.componentsFor(desc);
@@ -166,7 +154,25 @@ public class SSTableReader extends SSTab
long start = System.currentTimeMillis();
logger.info("Sampling index for " + descriptor);
- SSTableReader sstable = new SSTableReader(descriptor, components, metadata, partitioner, null, null, null, null, System.currentTimeMillis(), null, null);
+ EstimatedHistogram rowSizes;
+ EstimatedHistogram columnCounts;
+ File statsFile = new File(descriptor.filenameFor(SSTable.COMPONENT_STATS));
+ if (statsFile.exists())
+ {
+ logger.debug("Load statistics for {}", descriptor);
+ DataInputStream dis = new DataInputStream(new FileInputStream(statsFile));
+ rowSizes = EstimatedHistogram.serializer.deserialize(dis);
+ columnCounts = EstimatedHistogram.serializer.deserialize(dis);
+ dis.close();
+ }
+ else
+ {
+ logger.debug("No statistics for {}", descriptor);
+ rowSizes = SSTable.defaultRowHistogram();
+ columnCounts = SSTable.defaultColumnHistogram();
+ }
+
+ SSTableReader sstable = new SSTableReader(descriptor, components, metadata, partitioner, null, null, null, null, System.currentTimeMillis(), rowSizes, columnCounts);
sstable.setTrackedBy(tracker);
// versions before 'c' encoded keys as utf-16 before hashing to the filter
@@ -179,8 +185,6 @@ public class SSTableReader extends SSTab
sstable.load(false, savedKeys);
sstable.loadBloomFilter();
}
- sstable.loadStatistics(descriptor);
-
if (logger.isDebugEnabled())
logger.debug("INDEX LOAD TIME for " + descriptor + ": " + (System.currentTimeMillis() - start) + " ms.");
@@ -209,19 +213,17 @@ public class SSTableReader extends SSTab
IndexSummary indexSummary,
BloomFilter bloomFilter,
long maxDataAge,
- EstimatedHistogram rowsize,
- EstimatedHistogram columncount)
+ EstimatedHistogram rowSizes,
+ EstimatedHistogram columnCounts)
throws IOException
{
- super(desc, components, metadata, partitioner);
+ super(desc, components, metadata, partitioner, rowSizes, columnCounts);
this.maxDataAge = maxDataAge;
this.ifile = ifile;
this.dfile = dfile;
this.indexSummary = indexSummary;
this.bf = bloomFilter;
- estimatedRowSize = rowsize;
- estimatedColumnCount = columncount;
}
public void setTrackedBy(SSTableTracker tracker)
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java?rev=1023919&r1=1023918&r2=1023919&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java Mon Oct 18 17:40:51 2010
@@ -20,6 +20,7 @@
package org.apache.cassandra.io.sstable;
import java.io.*;
+import java.util.HashSet;
import java.util.Set;
import org.apache.cassandra.io.util.FileUtils;
@@ -55,7 +56,7 @@ public class SSTableWriter extends SSTab
public SSTableWriter(String filename, long keyCount, CFMetaData metadata, IPartitioner partitioner) throws IOException
{
- super(Descriptor.fromFilename(filename), metadata, partitioner);
+ super(Descriptor.fromFilename(filename), new HashSet<Component>(), metadata, partitioner, SSTable.defaultRowHistogram(), SSTable.defaultColumnHistogram());
iwriter = new IndexWriter(descriptor, partitioner, keyCount);
dbuilder = SegmentedFile.getBuilder(DatabaseDescriptor.getDiskAccessMode());
dataFile = new BufferedRandomAccessFile(getFilename(), "rw", DatabaseDescriptor.getInMemoryCompactionLimit());