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/11/06 18:56:35 UTC

svn commit: r833498 - in /incubator/cassandra/trunk/src/java/org/apache/cassandra: db/BinaryMemtable.java db/ColumnFamilyStore.java db/Memtable.java io/SSTableTracker.java

Author: jbellis
Date: Fri Nov  6 17:56:35 2009
New Revision: 833498

URL: http://svn.apache.org/viewvc?rev=833498&view=rev
Log:
avoid flushing empty binarymemtable
patch by jbellis; reviewed by goffinet for CASSANDRA-532

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/Memtable.java
    incubator/cassandra/trunk/src/java/org/apache/cassandra/io/SSTableTracker.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=833498&r1=833497&r2=833498&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 Fri Nov  6 17:56:35 2009
@@ -116,6 +116,11 @@
         }
     }
 
+    public boolean isClean()
+    {
+        return columnFamilies_.isEmpty();
+    }
+
     private void resolve(String key, byte[] buffer)
     {
         columnFamilies_.put(partitioner_.decorateKey(key), buffer);

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=833498&r1=833497&r2=833498&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 Fri Nov  6 17:56:35 2009
@@ -443,6 +443,9 @@
 
     public void forceFlushBinary()
     {
+        if (memtable_.isClean())
+            return;
+
         submitFlush(binaryMemtable_.get());
     }
 

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=833498&r1=833497&r2=833498&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 Fri Nov  6 17:56:35 2009
@@ -42,7 +42,6 @@
 	private static final Logger logger_ = Logger.getLogger( Memtable.class );
 
     private boolean isFrozen_;
-    private volatile boolean isDirty_;
     private volatile boolean isFlushed_; // for tests, in particular forceBlockingFlush asserts this
 
     private final int threshold_ = DatabaseDescriptor.getMemtableSize()*1024*1024; // not static since we might want to change at runtime
@@ -141,7 +140,6 @@
     void put(String key, ColumnFamily columnFamily)
     {
         assert !isFrozen_; // not 100% foolproof but hell, it's an assert
-        isDirty_ = true;
         resolve(key, columnFamily);
     }
 
@@ -244,9 +242,7 @@
 
     public boolean isClean()
     {
-        // executor taskcount is inadequate for our needs here -- it can return zero under certain
-        // race conditions even though a task has been processed.
-        return !isDirty_;
+        return columnFamilies_.isEmpty();
     }
 
     /**

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/io/SSTableTracker.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/io/SSTableTracker.java?rev=833498&r1=833497&r2=833498&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/io/SSTableTracker.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/io/SSTableTracker.java Fri Nov  6 17:56:35 2009
@@ -17,6 +17,8 @@
 
     public synchronized void add(SSTableReader sstable)
     {
+        assert sstable != null;
+        assert sstable.getIndexPositions() != null;
         Set<SSTableReader> sstablesNew = new HashSet<SSTableReader>(sstables);
         sstablesNew.add(sstable);
         sstables = Collections.unmodifiableSet(sstablesNew);