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 2009/09/26 14:54:13 UTC
svn commit: r819125 - in
/incubator/cassandra/trunk/src/java/org/apache/cassandra/db:
BinaryMemtable.java ColumnFamilyStore.java IFlushable.java Memtable.java
Author: jbellis
Date: Sat Sep 26 12:54:12 2009
New Revision: 819125
URL: http://svn.apache.org/viewvc?rev=819125&view=rev
Log:
r/m unnecessary SortedFlushable class. Keeping a 2nd reference to the Flushable in question,
when it is only used to pass back to that Flushable for the write phase, was unnecessary & confusing.
patch by jbellis; tested for CASSANDRA-458 by Teodor Sigaev
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/BinaryMemtable.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/IFlushable.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/BinaryMemtable.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/BinaryMemtable.java?rev=819125&r1=819124&r2=819125&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/BinaryMemtable.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/BinaryMemtable.java Sat Sep 26 12:54:12 2009
@@ -37,7 +37,7 @@
import org.cliffc.high_scale_lib.NonBlockingHashMap;
import org.apache.cassandra.dht.IPartitioner;
-public class BinaryMemtable implements IFlushable
+public class BinaryMemtable implements IFlushable<DecoratedKey>
{
private static Logger logger_ = Logger.getLogger(BinaryMemtable.class);
private int threshold_ = DatabaseDescriptor.getBMTThreshold() * 1024 * 1024;
@@ -122,23 +122,23 @@
currentSize_.addAndGet(buffer.length + key.length());
}
- public ColumnFamilyStore.SortedFlushable getSortedContents()
+ public List<DecoratedKey> getSortedKeys()
{
assert !columnFamilies_.isEmpty();
logger_.info("Sorting " + this);
List<DecoratedKey> keys = new ArrayList<DecoratedKey>(columnFamilies_.keySet());
Collections.sort(keys, partitioner_.getDecoratedKeyObjComparator());
- return new ColumnFamilyStore.SortedFlushable(keys, this);
+ return keys;
}
- public SSTableReader writeSortedContents(ColumnFamilyStore.SortedFlushable sortedFlushable) throws IOException
+ public SSTableReader writeSortedContents(List<DecoratedKey> sortedKeys) throws IOException
{
logger_.info("Writing " + this);
ColumnFamilyStore cfStore = Table.open(table_).getColumnFamilyStore(cfName_);
String path = cfStore.getTempSSTablePath();
- SSTableWriter writer = new SSTableWriter(path, sortedFlushable.keys.size(), StorageService.getPartitioner());
+ SSTableWriter writer = new SSTableWriter(path, sortedKeys.size(), StorageService.getPartitioner());
- for (DecoratedKey key : (List<DecoratedKey>) sortedFlushable.keys)
+ for (DecoratedKey key : sortedKeys)
{
byte[] bytes = columnFamilies_.get(key);
assert bytes.length > 0;
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=819125&r1=819124&r2=819125&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Sat Sep 26 12:54:12 2009
@@ -924,14 +924,14 @@
{
public void run()
{
- final SortedFlushable sortedFlushable = flushable.getSortedContents();
+ final List sortedKeys = flushable.getSortedKeys();
flushWriter_.submit(new Runnable()
{
public void run()
{
try
{
- addSSTable(flushable.writeSortedContents(sortedFlushable));
+ addSSTable(flushable.writeSortedContents(sortedKeys));
}
catch (IOException e)
{
@@ -1310,16 +1310,4 @@
{
memtable_.clearUnsafe();
}
-
- public static class SortedFlushable
- {
- public final List<?> keys;
- public final IFlushable flushable;
-
- public SortedFlushable(List<?> keys, IFlushable flushable)
- {
- this.keys = keys;
- this.flushable = flushable;
- }
- }
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/IFlushable.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/IFlushable.java?rev=819125&r1=819124&r2=819125&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/IFlushable.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/IFlushable.java Sat Sep 26 12:54:12 2009
@@ -1,11 +1,12 @@
package org.apache.cassandra.db;
import java.io.IOException;
+import java.util.List;
import org.apache.cassandra.io.SSTableReader;
-public interface IFlushable
+public interface IFlushable<T>
{
- public ColumnFamilyStore.SortedFlushable getSortedContents();
- public SSTableReader writeSortedContents(ColumnFamilyStore.SortedFlushable sortedFlushable) throws IOException;
+ public List<T> getSortedKeys();
+ public SSTableReader writeSortedContents(List<T> sortedKeys) throws IOException;
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java?rev=819125&r1=819124&r2=819125&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java Sat Sep 26 12:54:12 2009
@@ -37,7 +37,7 @@
import org.apache.log4j.Logger;
-public class Memtable implements Comparable<Memtable>, IFlushable
+public class Memtable implements Comparable<Memtable>, IFlushable<String>
{
private static Logger logger_ = Logger.getLogger( Memtable.class );
@@ -170,7 +170,7 @@
void flushOnRecovery() throws IOException {
if (!isClean())
{
- writeSortedContents(getSortedContents());
+ writeSortedContents(getSortedKeys());
}
}
@@ -187,7 +187,7 @@
return builder.toString();
}
- public ColumnFamilyStore.SortedFlushable getSortedContents()
+ public List<String> getSortedKeys()
{
logger_.info("Sorting " + this);
// sort keys in the order they would be in when decorated
@@ -201,10 +201,10 @@
return dc.compare(partitioner.decorateKey(o1), partitioner.decorateKey(o2));
}
});
- return new ColumnFamilyStore.SortedFlushable(orderedKeys, this);
+ return orderedKeys;
}
- public SSTableReader writeSortedContents(ColumnFamilyStore.SortedFlushable sortedFlushable) throws IOException
+ public SSTableReader writeSortedContents(List<String> sortedKeys) throws IOException
{
logger_.info("Writing " + this);
IPartitioner<?> partitioner = StorageService.getPartitioner();
@@ -212,17 +212,14 @@
SSTableWriter writer = new SSTableWriter(cfStore.getTempSSTablePath(), columnFamilies_.size(), StorageService.getPartitioner());
DataOutputBuffer buffer = new DataOutputBuffer();
- for (String key : (List<String>) sortedFlushable.keys)
+ for (String key : sortedKeys)
{
buffer.reset();
ColumnFamily columnFamily = columnFamilies_.get(key);
- if (columnFamily != null)
- {
- /* serialize the cf with column indexes */
- ColumnFamily.serializer().serializeWithIndexes(columnFamily, buffer);
- /* Now write the key and value to disk */
- writer.append(partitioner.decorateKey(key), buffer);
- }
+ /* serialize the cf with column indexes */
+ ColumnFamily.serializer().serializeWithIndexes(columnFamily, buffer);
+ /* Now write the key and value to disk */
+ writer.append(partitioner.decorateKey(key), buffer);
}
buffer.close();
SSTableReader ssTable = writer.closeAndOpenReader();