Author: jbellis
Date: Thu Jul 15 03:02:57 2010
New Revision: 964290
URL: http://svn.apache.org/viewvc?rev=964290&view=rev
Log:
Calculate feature flags on Descriptor creation
patch by Stu Hood; reviewed by jbellis for CASSANDRA-1249
Modified:
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.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/Descriptor.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java?rev=964290&r1=964289&r2=964290&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java
Thu Jul 15 03:02:57 2010
@@ -25,6 +25,11 @@ public class Descriptor
public final boolean temporary;
private final int hashCode;
+ public final boolean hasStringsInBloomFilter;
+ public final boolean hasIntRowSize;
+ public final boolean hasEncodedKeys;
+ public final boolean isLatestVersion;
+
/**
* A descriptor that assumes CURRENT_VERSION.
*/
@@ -43,6 +48,11 @@ public class Descriptor
this.generation = generation;
temporary = temp;
hashCode = Objects.hashCode(directory, generation, ksname, cfname);
+
+ hasStringsInBloomFilter = version.compareTo("c") < 0;
+ hasIntRowSize = version.compareTo("d") < 0;
+ hasEncodedKeys = version.compareTo("e") < 0;
+ isLatestVersion = version.compareTo(CURRENT_VERSION) == 0;
}
/**
@@ -149,24 +159,4 @@ public class Descriptor
{
return hashCode;
}
-
- public boolean hasStringsInBloomFilter()
- {
- return version.compareTo("c") < 0;
- }
-
- public boolean hasIntRowSize()
- {
- return version.compareTo("d") < 0;
- }
-
- public boolean hasEncodedKeys()
- {
- return version.compareTo("e") < 0;
- }
-
- public boolean isLatestVersion()
- {
- return version.compareTo(CURRENT_VERSION) == 0;
- }
}
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=964290&r1=964289&r2=964290&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
Thu Jul 15 03:02:57 2010
@@ -182,7 +182,7 @@ public class SSTableReader extends SSTab
SSTableReader sstable = new SSTableReader(desc, partitioner, null,
null, null, null, System.currentTimeMillis());
// versions before 'c' encoded keys as utf-16 before hashing to the
filter
- if (desc.hasStringsInBloomFilter())
+ if (desc.hasStringsInBloomFilter)
{
sstable.load(true);
}
@@ -551,7 +551,7 @@ public class SSTableReader extends SSTab
public static long readRowSize(DataInput in, Descriptor d) throws
IOException
{
- if (d.hasIntRowSize())
+ if (d.hasIntRowSize)
return in.readInt();
return in.readLong();
}
@@ -561,7 +561,7 @@ public class SSTableReader extends SSTab
*/
public static DecoratedKey decodeKey(IPartitioner p, Descriptor d, byte[]
bytes)
{
- if (d.hasEncodedKeys())
+ if (d.hasEncodedKeys)
return p.convertFromDiskFormat(bytes);
return p.decorateKey(bytes);
}
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=964290&r1=964289&r2=964290&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
Thu Jul 15 03:02:57 2010
@@ -267,7 +267,9 @@ public class SSTableWriter extends SSTab
*/
public static SSTableReader recoverAndOpen(Descriptor desc) throws
IOException
{
- if (!desc.isLatestVersion())
+ if (!desc.isLatestVersion)
+ // TODO: streaming between different versions will fail: need
support for
+ // recovering other versions to provide a stable streaming api
throw new RuntimeException(String.format("Cannot recover SSTable
with version %s (current version %s).",
desc.version,
Descriptor.CURRENT_VERSION));