You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by be...@apache.org on 2015/01/29 11:08:29 UTC

[2/3] cassandra git commit: ninja follow-up to 8619

ninja follow-up to 8619


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a2d10c45
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a2d10c45
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a2d10c45

Branch: refs/heads/trunk
Commit: a2d10c45076d0cc920c6649fcc797697102280f2
Parents: 3ad0d3a
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Thu Jan 29 09:41:49 2015 +0000
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Thu Jan 29 10:07:54 2015 +0000

----------------------------------------------------------------------
 .../cassandra/io/sstable/CQLSSTableWriter.java  |  2 +-
 .../io/sstable/SSTableSimpleUnsortedWriter.java | 32 ++++++++++++++------
 2 files changed, 23 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2d10c45/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
index 3e27ff9..a243175 100644
--- a/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
@@ -549,7 +549,7 @@ public class CQLSSTableWriter implements Closeable
             };
         }
 
-        protected void addColumn(Cell cell) throws IOException
+        protected void addColumn(Column column) throws IOException
         {
             throw new UnsupportedOperationException();
         }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2d10c45/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
index 129dfca..af720c0 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
@@ -23,6 +23,7 @@ import java.util.Map;
 import java.util.TreeMap;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.TimeUnit;
 
 import com.google.common.base.Throwables;
 
@@ -165,17 +166,21 @@ public class SSTableSimpleUnsortedWriter extends AbstractSSTableSimpleWriter
         if (buffer.isEmpty())
             return;
 
-        checkForWriterException();
-
-        columnFamily = null;
-        try
+        while (true)
         {
-            writeQueue.put(buffer);
-        }
-        catch (InterruptedException e)
-        {
-            throw new RuntimeException(e);
+            checkForWriterException();
 
+            columnFamily = null;
+            try
+            {
+                if (writeQueue.offer(buffer, 1L, TimeUnit.SECONDS))
+                    break;
+            }
+            catch (InterruptedException e)
+            {
+                throw new RuntimeException(e);
+
+            }
         }
         buffer = new Buffer();
         currentSize = 0;
@@ -213,8 +218,15 @@ public class SSTableSimpleUnsortedWriter extends AbstractSSTableSimpleWriter
                         return;
 
                     writer = getWriter();
+                    boolean first = true;
                     for (Map.Entry<DecoratedKey, ColumnFamily> entry : b.entrySet())
-                        writer.append(entry.getKey(), entry.getValue());
+                    {
+                        if (entry.getValue().getColumnCount() > 0)
+                            writer.append(entry.getKey(), entry.getValue());
+                        else if (!first)
+                            throw new AssertionError("Empty partition");
+                        first = false;
+                    }
                     writer.close();
                 }
             }