<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,7 @@
+0.4-dev
+ * avoid flushing empty binarymemtable (CASSANDRA-532)
+ * explicitly close bloom filter, index filehandles (CASSANDRA-533)
+
 0.4.2
  * Add validation disallowing null keys (CASSANDRA-486)
  * Fix race conditions in TCPConnectionManager (CASSANDRA-487)</diff>
      <filename>CHANGES.txt</filename>
    </modified>
    <modified>
      <diff>@@ -121,6 +121,11 @@ public class BinaryMemtable
         }
     }
 
+    public boolean isClean()
+    {
+        return columnFamilies_.isEmpty();
+    }
+
     private void resolve(String key, byte[] buffer)
     {
             columnFamilies_.put(key, buffer);</diff>
      <filename>src/java/org/apache/cassandra/db/BinaryMemtable.java</filename>
    </modified>
    <modified>
      <diff>@@ -423,6 +423,9 @@ public final class ColumnFamilyStore implements ColumnFamilyStoreMBean
 
     public void forceFlushBinary()
     {
+        if (memtable_.isClean())
+            return;
+
         submitFlush(binaryMemtable_.get());
     }
 </diff>
      <filename>src/java/org/apache/cassandra/db/ColumnFamilyStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -42,7 +42,6 @@ public class Memtable implements Comparable&lt;Memtable&gt;
 	private static 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 int threshold_ = DatabaseDescriptor.getMemtableSize()*1024*1024;
@@ -135,7 +134,6 @@ public class Memtable implements Comparable&lt;Memtable&gt;
     void put(String key, ColumnFamily columnFamily)
     {
         assert !isFrozen_; // not 100% foolproof but hell, it's an assert
-        isDirty_ = true;
         resolve(key, columnFamily);
     }
 
@@ -248,9 +246,7 @@ public class Memtable implements Comparable&lt;Memtable&gt;
 
     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();
     }
 
     /**</diff>
      <filename>src/java/org/apache/cassandra/db/Memtable.java</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>4953062c3575d0cda8b1b0309fc3d71515115de5</id>
    </parent>
  </parents>
  <author>
    <name>Jonathan Ellis</name>
    <email>jbellis@apache.org</email>
  </author>
  <url>http://github.com/ryanking/cassandra/commit/7c12909aadfbf8c7948569cf456e79749d86565e</url>
  <id>7c12909aadfbf8c7948569cf456e79749d86565e</id>
  <committed-date>2009-11-07T16:36:23-08:00</committed-date>
  <authored-date>2009-11-07T16:36:23-08:00</authored-date>
  <message>merge 833498 from trunk

git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/branches/cassandra-0.4@833783 13f79535-47bb-0310-9956-ffa450edef68</message>
  <tree>ba3da188f5effdb9b3555b38b5bab5b7d900f8c3</tree>
  <committer>
    <name>Jonathan Ellis</name>
    <email>jbellis@apache.org</email>
  </committer>
</commit>
