Author: gdusbabek
Date: Thu Jan 14 16:39:36 2010
New Revision: 899280

URL: http://svn.apache.org/viewvc?rev=899280&view=rev
Log:
wait for table flush before streaming data back to a bootstrapping node. Patch 
by Gary Dusbabek, reviewed by Jonathan Ellis.

Modified:
    incubator/cassandra/branches/cassandra-0.5/CHANGES.txt
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/Streaming.java

Modified: incubator/cassandra/branches/cassandra-0.5/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/CHANGES.txt?rev=899280&r1=899279&r2=899280&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.5/CHANGES.txt (original)
+++ incubator/cassandra/branches/cassandra-0.5/CHANGES.txt Thu Jan 14 16:39:36 
2010
@@ -5,6 +5,8 @@
    (CASSANDRA-694)
  * optimize inner read in MessagingService, vastly improving multiple-node
    performance (CASSANDRA-675)
+ * wait for table flush before streaming data back to a bootstrapping node.
+   (CASSANDRA-696)
 
 
 0.5.0 RC3

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/Streaming.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/Streaming.java?rev=899280&r1=899279&r2=899280&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/Streaming.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/Streaming.java
 Thu Jan 14 16:39:36 2010
@@ -26,6 +26,8 @@
 import java.io.IOException;
 import java.io.File;
 import java.io.IOError;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
 
 import org.apache.log4j.Logger;
 import org.apache.commons.lang.StringUtils;
@@ -73,7 +75,21 @@
                 Table table = Table.open(tName);
                 if (logger.isDebugEnabled())
                   logger.debug("Flushing memtables ...");
-                table.flush();
+                for (Future f : table.flush())
+                {
+                    try
+                    {
+                        f.get();
+                    }
+                    catch (InterruptedException e)
+                    {
+                        throw new RuntimeException(e);
+                    }
+                    catch (ExecutionException e)
+                    {
+                        throw new RuntimeException(e);
+                    }
+                }
                 if (logger.isDebugEnabled())
                   logger.debug("Performing anticompaction ...");
                 /* Get the list of files that need to be streamed */


Reply via email to