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));
 


Reply via email to