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