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/06/16 17:27:17 UTC

svn commit: r955268 - in /cassandra/trunk: src/java/org/apache/cassandra/db/filter/ src/java/org/apache/cassandra/io/ src/java/org/apache/cassandra/io/sstable/ test/unit/org/apache/cassandra/db/ test/unit/org/apache/cassandra/io/ test/unit/org/apache/c...

Author: jbellis
Date: Wed Jun 16 15:27:17 2010
New Revision: 955268

URL: http://svn.apache.org/viewvc?rev=955268&view=rev
Log:
make row size 64 bits
patch by jbellis; reviewed by Stu Hood for CASSANDRA-16


Modified:
    cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableNamesIterator.java
    cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java
    cassandra/trunk/src/java/org/apache/cassandra/io/LazilyCompactedRow.java
    cassandra/trunk/src/java/org/apache/cassandra/io/PrecompactedRow.java
    cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTable.java
    cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableIdentityIterator.java
    cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
    cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java
    cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
    cassandra/trunk/test/unit/org/apache/cassandra/db/TableTest.java
    cassandra/trunk/test/unit/org/apache/cassandra/io/LazilyCompactedRowTest.java
    cassandra/trunk/test/unit/org/apache/cassandra/io/sstable/SSTableTest.java

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableNamesIterator.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableNamesIterator.java?rev=955268&r1=955267&r2=955268&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableNamesIterator.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableNamesIterator.java Wed Jun 16 15:27:17 2010
@@ -71,8 +71,8 @@ public class SSTableNamesIterator extend
                     return;
                 DecoratedKey keyInDisk = ssTable.getPartitioner().convertFromDiskFormat(FBUtilities.readShortByteArray(file));
                 assert keyInDisk.equals(decoratedKey)
-                        : String.format("%s != %s in %s", keyInDisk, decoratedKey, file.getPath());
-                file.readInt(); // data size
+                       : String.format("%s != %s in %s", keyInDisk, decoratedKey, file.getPath());
+                SSTableReader.readRowSize(file, ssTable.getDescriptor());
             }
 
             // read the requested columns into `cf`

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java?rev=955268&r1=955267&r2=955268&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java Wed Jun 16 15:27:17 2010
@@ -90,7 +90,7 @@ class SSTableSliceIterator extends Abstr
                 DecoratedKey keyInDisk = ssTable.getPartitioner().convertFromDiskFormat(FBUtilities.readShortByteArray(file));
                 assert keyInDisk.equals(decoratedKey)
                        : String.format("%s != %s in %s", keyInDisk, decoratedKey, file.getPath());
-                file.readInt(); // row size
+                SSTableReader.readRowSize(file, ssTable.getDescriptor());
             }
             catch (IOException e)
             {

Modified: cassandra/trunk/src/java/org/apache/cassandra/io/LazilyCompactedRow.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/LazilyCompactedRow.java?rev=955268&r1=955267&r2=955268&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/LazilyCompactedRow.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/LazilyCompactedRow.java Wed Jun 16 15:27:17 2010
@@ -71,7 +71,7 @@ public class LazilyCompactedRow extends 
         if (rows.size() == 1 && !major)
         {
             SSTableIdentityIterator row = rows.get(0);
-            out.writeInt(row.getDataSize());
+            out.writeLong(row.getDataSize());
             row.echoData(out);
             return;
         }
@@ -79,7 +79,7 @@ public class LazilyCompactedRow extends 
         DataOutputBuffer clockOut = new DataOutputBuffer();
         ColumnFamily.serializer().serializeCFInfo(emptyColumnFamily, clockOut);
 
-        out.writeInt((int)(headerBuffer.getLength() + clockOut.getLength() + columnSerializedSize));
+        out.writeLong(headerBuffer.getLength() + clockOut.getLength() + columnSerializedSize);
         out.write(headerBuffer.getData(), 0, headerBuffer.getLength());
         out.write(clockOut.getData(), 0, clockOut.getLength());
         out.writeInt(columnCount);

Modified: cassandra/trunk/src/java/org/apache/cassandra/io/PrecompactedRow.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/PrecompactedRow.java?rev=955268&r1=955267&r2=955268&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/PrecompactedRow.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/PrecompactedRow.java Wed Jun 16 15:27:17 2010
@@ -79,7 +79,7 @@ public class PrecompactedRow extends Abs
 
     public void write(DataOutput out) throws IOException
     {
-        out.writeInt(buffer.getLength());
+        out.writeLong(buffer.getLength());
         out.write(buffer.getData(), 0, buffer.getLength());
     }
 

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=955268&r1=955267&r2=955268&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 Wed Jun 16 15:27:17 2010
@@ -210,7 +210,7 @@ public abstract class SSTable
     public static class Descriptor
     {
         public static final String LEGACY_VERSION = "a";
-        public static final String CURRENT_VERSION = "c";
+        public static final String CURRENT_VERSION = "d";
 
         public final File directory;
         public final String version;

Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableIdentityIterator.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableIdentityIterator.java?rev=955268&r1=955267&r2=955268&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableIdentityIterator.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableIdentityIterator.java Wed Jun 16 15:27:17 2010
@@ -37,7 +37,7 @@ public class SSTableIdentityIterator imp
     private final BufferedRandomAccessFile file;
     private SSTableReader sstable;
     private long dataStart;
-    private final int dataSize;
+    private final long dataSize;
 
     /**
      * Used to iterate through the columns of a row.
@@ -48,7 +48,7 @@ public class SSTableIdentityIterator imp
      * @param dataSize length of row data
      * @throws IOException
      */
-    public SSTableIdentityIterator(SSTableReader sstable, BufferedRandomAccessFile file, DecoratedKey key, long dataStart, int dataSize)
+    public SSTableIdentityIterator(SSTableReader sstable, BufferedRandomAccessFile file, DecoratedKey key, long dataStart, long dataSize)
     throws IOException
     {
         this.sstable = sstable;
@@ -69,7 +69,7 @@ public class SSTableIdentityIterator imp
         return file.getPath();
     }
 
-    public int getDataSize()
+    public long getDataSize()
     {
         return dataSize;
     }

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=955268&r1=955267&r2=955268&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 Wed Jun 16 15:27:17 2010
@@ -546,4 +546,11 @@ public class SSTableReader extends SSTab
     {
         return maxDataAge > age;
     }
+
+    public static long readRowSize(DataInput in, Descriptor d) throws IOException
+    {
+        if (d.versionCompareTo("d") < 0)
+            return in.readInt();
+        return in.readLong();
+    }
 }

Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java?rev=955268&r1=955267&r2=955268&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java Wed Jun 16 15:27:17 2010
@@ -169,7 +169,7 @@ public class SSTableScanner implements I
                 assert !file.isEOF();
 
                 DecoratedKey key = StorageService.getPartitioner().convertFromDiskFormat(FBUtilities.readShortByteArray(file));
-                int dataSize = file.readInt();
+                long dataSize = SSTableReader.readRowSize(file, sstable.getDescriptor());
                 dataStart = file.getFilePointer();
                 finishedAt = dataStart + dataSize;
 

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=955268&r1=955267&r2=955268&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 Wed Jun 16 15:27:17 2010
@@ -126,7 +126,7 @@ public class SSTableWriter extends SSTab
         FBUtilities.writeShortByteArray(partitioner.convertToDiskFormat(decoratedKey), dataFile);
         int length = buffer.getLength();
         assert length > 0;
-        dataFile.writeInt(length);
+        dataFile.writeLong(length);
         dataFile.write(buffer.getData(), 0, length);
         afterAppend(decoratedKey, currentPosition);
     }
@@ -136,7 +136,7 @@ public class SSTableWriter extends SSTab
         long currentPosition = beforeAppend(decoratedKey);
         FBUtilities.writeShortByteArray(partitioner.convertToDiskFormat(decoratedKey), dataFile);
         assert value.length > 0;
-        dataFile.writeInt(value.length);
+        dataFile.writeLong(value.length);
         dataFile.write(value);
         afterAppend(decoratedKey, currentPosition);
     }

Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/TableTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/TableTest.java?rev=955268&r1=955267&r2=955268&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/TableTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/TableTest.java Wed Jun 16 15:27:17 2010
@@ -435,7 +435,7 @@ public class TableTest extends CleanupHe
         BufferedRandomAccessFile file = new BufferedRandomAccessFile(sstable.getFilename(), "r");
         file.seek(position);
         assert Arrays.equals(FBUtilities.readShortByteArray(file), key.key);
-        file.readInt();
+        SSTableReader.readRowSize(file, sstable.getDescriptor());
         IndexHelper.skipBloomFilter(file);
         ArrayList<IndexHelper.IndexInfo> indexes = IndexHelper.deserializeIndex(file);
         assert indexes.size() > 2;

Modified: cassandra/trunk/test/unit/org/apache/cassandra/io/LazilyCompactedRowTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/io/LazilyCompactedRowTest.java?rev=955268&r1=955267&r2=955268&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/io/LazilyCompactedRowTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/io/LazilyCompactedRowTest.java Wed Jun 16 15:27:17 2010
@@ -55,10 +55,10 @@ public class LazilyCompactedRowTest exte
             // key isn't part of what CompactedRow writes, that's done by SSTW.append
 
             // row size can differ b/c of bloom filter counts being different
-            int rowSize1 = in1.readInt();
-            int rowSize2 = in2.readInt();
-            assertEquals(out1.getLength(), rowSize1 + 4);
-            assertEquals(out2.getLength(), rowSize2 + 4);
+            long rowSize1 = SSTableReader.readRowSize(in1, sstables.iterator().next().getDescriptor());
+            long rowSize2 = SSTableReader.readRowSize(in2, sstables.iterator().next().getDescriptor());
+            assertEquals(out1.getLength(), rowSize1 + 8);
+            assertEquals(out2.getLength(), rowSize2 + 8);
             // bloom filter
             IndexHelper.defreezeBloomFilter(in1);
             IndexHelper.defreezeBloomFilter(in2);

Modified: cassandra/trunk/test/unit/org/apache/cassandra/io/sstable/SSTableTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/io/sstable/SSTableTest.java?rev=955268&r1=955267&r2=955268&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/io/sstable/SSTableTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/io/sstable/SSTableTest.java Wed Jun 16 15:27:17 2010
@@ -52,7 +52,7 @@ public class SSTableTest extends Cleanup
         BufferedRandomAccessFile file = new BufferedRandomAccessFile(sstable.getFilename(), "r");
         file.seek(sstable.getPosition(sstable.partitioner.decorateKey(key)));
         assert Arrays.equals(key, FBUtilities.readShortByteArray(file));
-        int size = file.readInt();
+        int size = (int)SSTableReader.readRowSize(file, sstable.getDescriptor());
         byte[] bytes2 = new byte[size];
         file.readFully(bytes2);
         assert Arrays.equals(bytes2, bytes);
@@ -84,7 +84,7 @@ public class SSTableTest extends Cleanup
         {
             file.seek(sstable.getPosition(sstable.partitioner.decorateKey(key)));
             assert Arrays.equals(key, FBUtilities.readShortByteArray(file));
-            int size = file.readInt();
+            int size = (int)SSTableReader.readRowSize(file, sstable.getDescriptor());
             byte[] bytes2 = new byte[size];
             file.readFully(bytes2);
             assert Arrays.equals(bytes2, map.get(key));