You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2012/03/27 15:20:54 UTC

git commit: Minor reduction in serializer fetching

Updated Branches:
  refs/heads/trunk 417b175fa -> 17dd5cd18


Minor reduction in serializer fetching

patch by dbrosius; reviewed by slebresne for CASSANDRA-4082


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/17dd5cd1
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/17dd5cd1
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/17dd5cd1

Branch: refs/heads/trunk
Commit: 17dd5cd18736a11255dad686286aa0b30ead8a42
Parents: 417b175
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Tue Mar 27 15:19:25 2012 +0200
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Tue Mar 27 15:19:25 2012 +0200

----------------------------------------------------------------------
 .../cassandra/db/ColumnFamilySerializer.java       |    7 +++++--
 .../db/columniterator/IndexedSliceReader.java      |   10 ++++++----
 .../db/columniterator/SSTableNamesIterator.java    |   14 +++++++-------
 .../db/compaction/LazilyCompactedRow.java          |    4 +++-
 .../apache/cassandra/io/sstable/SSTableWriter.java |    3 ++-
 5 files changed, 23 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/17dd5cd1/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java b/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
index 449ddbd..53b2183 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
@@ -80,8 +80,10 @@ public class ColumnFamilySerializer implements ISerializer<ColumnFamily>
             Collection<IColumn> columns = columnFamily.getSortedColumns();
             int count = columns.size();
             dos.writeInt(count);
+
+            IColumnSerializer columnSerializer = columnFamily.getColumnSerializer();
             for (IColumn column : columns)
-                columnFamily.getColumnSerializer().serialize(column, dos);
+                columnSerializer.serialize(column, dos);
         }
         catch (IOException e)
         {
@@ -124,9 +126,10 @@ public class ColumnFamilySerializer implements ISerializer<ColumnFamily>
     /* column count is already read from DataInput */
     public void deserializeColumns(DataInput dis, ColumnFamily cf, int size, IColumnSerializer.Flag flag) throws IOException
     {
+        IColumnSerializer columnSerializer = cf.getColumnSerializer();
         for (int i = 0; i < size; ++i)
         {
-            IColumn column = cf.getColumnSerializer().deserialize(dis, flag, (int) (System.currentTimeMillis() / 1000));
+            IColumn column = columnSerializer.deserialize(dis, flag, (int) (System.currentTimeMillis() / 1000));
             cf.addColumn(column);
         }
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/17dd5cd1/src/java/org/apache/cassandra/db/columniterator/IndexedSliceReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/columniterator/IndexedSliceReader.java b/src/java/org/apache/cassandra/db/columniterator/IndexedSliceReader.java
index 50ada51..c5932cd 100644
--- a/src/java/org/apache/cassandra/db/columniterator/IndexedSliceReader.java
+++ b/src/java/org/apache/cassandra/db/columniterator/IndexedSliceReader.java
@@ -31,11 +31,11 @@ import org.apache.cassandra.db.DecoratedKey;
 import org.apache.cassandra.db.IColumn;
 import org.apache.cassandra.db.RowIndexEntry;
 import org.apache.cassandra.db.marshal.AbstractType;
+import org.apache.cassandra.io.IColumnSerializer;
 import org.apache.cassandra.io.sstable.IndexHelper;
+import org.apache.cassandra.io.sstable.SSTableReader;
 import org.apache.cassandra.io.util.FileDataInput;
 import org.apache.cassandra.io.util.FileMark;
-import org.apache.cassandra.io.sstable.SSTableReader;
-import org.apache.cassandra.io.util.FileUtils;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 /**
@@ -222,11 +222,12 @@ class IndexedSliceReader extends AbstractIterator<IColumn> implements IColumnIte
             if (file == null)
                 file = originalInput == null ? sstable.getFileDataInput(positionToSeek) : originalInput;
 
+            IColumnSerializer columnSerializer = emptyColumnFamily.getColumnSerializer();
             file.seek(positionToSeek);
             FileMark mark = file.mark();
             while (file.bytesPastMark(mark) < curColPosition.width && !outOfBounds)
             {
-                IColumn column = emptyColumnFamily.getColumnSerializer().deserialize(file);
+                IColumn column = columnSerializer.deserialize(file);
                 if (reversed)
                     blockColumns.addFirst(column);
                 else
@@ -251,10 +252,11 @@ class IndexedSliceReader extends AbstractIterator<IColumn> implements IColumnIte
     {
         private SimpleBlockFetcher() throws IOException
         {
+            IColumnSerializer columnSerializer = emptyColumnFamily.getColumnSerializer();
             int columns = file.readInt();
             for (int i = 0; i < columns; i++)
             {
-                IColumn column = emptyColumnFamily.getColumnSerializer().deserialize(file);
+                IColumn column = columnSerializer.deserialize(file);
                 if (reversed)
                     blockColumns.addFirst(column);
                 else

http://git-wip-us.apache.org/repos/asf/cassandra/blob/17dd5cd1/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
index 068933c..72f37de 100644
--- a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
@@ -22,26 +22,24 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.*;
 
-import org.apache.cassandra.db.ColumnFamilySerializer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.cassandra.config.CFMetaData;
-import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.ColumnFamily;
+import org.apache.cassandra.db.ColumnFamilySerializer;
 import org.apache.cassandra.db.DecoratedKey;
 import org.apache.cassandra.db.IColumn;
 import org.apache.cassandra.db.RowIndexEntry;
 import org.apache.cassandra.db.marshal.AbstractType;
-import org.apache.cassandra.io.sstable.SSTableReader;
+import org.apache.cassandra.io.IColumnSerializer;
 import org.apache.cassandra.io.sstable.IndexHelper;
+import org.apache.cassandra.io.sstable.SSTableReader;
 import org.apache.cassandra.io.util.FileDataInput;
 import org.apache.cassandra.io.util.FileMark;
 import org.apache.cassandra.io.util.FileUtils;
-import org.apache.cassandra.utils.BloomFilter;
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.Filter;
-import org.apache.cassandra.utils.Pair;
 
 public class SSTableNamesIterator extends SimpleAbstractColumnIterator implements IColumnIterator
 {
@@ -195,11 +193,12 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
 
     private void readSimpleColumns(FileDataInput file, SortedSet<ByteBuffer> columnNames, List<ByteBuffer> filteredColumnNames) throws IOException
     {
+        IColumnSerializer columnSerializer = cf.getColumnSerializer();
         int columns = file.readInt();
         int n = 0;
         for (int i = 0; i < columns; i++)
         {
-            IColumn column = cf.getColumnSerializer().deserialize(file);
+            IColumn column = columnSerializer.deserialize(file);
             if (columnNames.contains(column.name()))
             {
                 cf.addColumn(column);
@@ -237,12 +236,13 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
             if (file == null)
                 file = createFileDataInput(positionToSeek);
 
+            IColumnSerializer columnSerializer = cf.getColumnSerializer();
             file.seek(positionToSeek);
             FileMark mark = file.mark();
             // TODO only completely deserialize columns we are interested in
             while (file.bytesPastMark(mark) < indexInfo.width)
             {
-                IColumn column = cf.getColumnSerializer().deserialize(file);
+                IColumn column = columnSerializer.deserialize(file);
                 // we check vs the original Set, not the filtered List, for efficiency
                 if (columnNames.contains(column.name()))
                 {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/17dd5cd1/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
index deeef24..6eae79c 100644
--- a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
+++ b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
@@ -36,6 +36,7 @@ import org.apache.cassandra.db.*;
 import org.apache.cassandra.db.columniterator.IColumnIterator;
 import org.apache.cassandra.db.columniterator.ICountableColumnIterator;
 import org.apache.cassandra.db.marshal.AbstractType;
+import org.apache.cassandra.io.IColumnSerializer;
 import org.apache.cassandra.io.util.DataOutputBuffer;
 import org.apache.cassandra.io.util.IIterableColumns;
 import org.apache.cassandra.utils.MergeIterator;
@@ -107,11 +108,12 @@ public class LazilyCompactedRow extends AbstractCompactedRow implements IIterabl
         out.write(clockOut.getData(), 0, clockOut.getLength());
         out.writeInt(columnStats.columnCount);
 
+        IColumnSerializer columnSerializer = emptyColumnFamily.getColumnSerializer();
         Iterator<IColumn> iter = iterator();
         while (iter.hasNext())
         {
             IColumn column = iter.next();
-            emptyColumnFamily.getColumnSerializer().serialize(column, out);
+            columnSerializer.serialize(column, out);
         }
         long secondPassColumnSize = reducer == null ? 0 : reducer.serializedSize;
         assert secondPassColumnSize == columnSerializedSize

http://git-wip-us.apache.org/repos/asf/cassandra/blob/17dd5cd1/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
index 55182d9..fe94116 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
@@ -207,11 +207,12 @@ public class SSTableWriter extends SSTable
         StreamingHistogram tombstones = new StreamingHistogram(TOMBSTONE_HISTOGRAM_BIN_SIZE);
         ColumnFamily cf = ColumnFamily.create(metadata, ArrayBackedSortedColumns.factory());
         ColumnIndex.Builder columnIndexer = new ColumnIndex.Builder(cf.getComparator(), key.key, columnCount);
+        IColumnSerializer columnSerializer = cf.getColumnSerializer();
         for (int i = 0; i < columnCount; i++)
         {
             // deserialize column with PRESERVE_SIZE because we've written the dataSize based on the
             // data size received, so we must reserialize the exact same data
-            IColumn column = cf.getColumnSerializer().deserialize(in, IColumnSerializer.Flag.PRESERVE_SIZE, Integer.MIN_VALUE);
+            IColumn column = columnSerializer.deserialize(in, IColumnSerializer.Flag.PRESERVE_SIZE, Integer.MIN_VALUE);
             if (column instanceof CounterColumn)
             {
                 column = ((CounterColumn) column).markDeltaToBeCleared();