Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 a2088b115 -> 796db6e09


Avoid NoSuchElementException on empty batch

Patch by Tyler Hobbs; reviewed by Sylvain Lebresne for CASSANDRA-10711


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

Branch: refs/heads/cassandra-3.0
Commit: 796db6e09c2c5f462df7d75513b3b765ed0404da
Parents: a2088b1
Author: Tyler Hobbs <tylerlho...@gmail.com>
Authored: Tue Dec 22 16:24:11 2015 -0600
Committer: Tyler Hobbs <tylerlho...@gmail.com>
Committed: Tue Dec 22 16:24:11 2015 -0600

----------------------------------------------------------------------
 CHANGES.txt                                                 | 1 +
 .../apache/cassandra/cql3/statements/BatchStatement.java    | 3 +++
 test/unit/org/apache/cassandra/cql3/BatchTests.java         | 9 ++++++---
 3 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/796db6e0/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index be39f29..7794c96 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * Avoid NoSuchElementException when executing empty batch (CASSANDRA-10711)
  * Avoid building PartitionUpdate in toString (CASSANDRA-10897)
  * Reduce heap spent when receiving many SSTables (CASSANDRA-10797)
  * Add back support for 3rd party auth providers to bulk loader 
(CASSANDRA-10873)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/796db6e0/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
index 1f1d507..dc7ef73 100644
--- a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
@@ -340,6 +340,9 @@ public class BatchStatement implements CQLStatement
 
     private void executeWithoutConditions(Collection<? extends IMutation> 
mutations, ConsistencyLevel cl) throws RequestExecutionException, 
RequestValidationException
     {
+        if (mutations.isEmpty())
+            return;
+
         // Extract each collection of updates from it's IMutation and then 
lazily concatenate all of them into a single Iterable.
         Iterable<PartitionUpdate> updates = 
Iterables.concat(Iterables.transform(mutations, new Function<IMutation, 
Collection<PartitionUpdate>>()
         {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/796db6e0/test/unit/org/apache/cassandra/cql3/BatchTests.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/BatchTests.java 
b/test/unit/org/apache/cassandra/cql3/BatchTests.java
index 95fe612..73923fb 100644
--- a/test/unit/org/apache/cassandra/cql3/BatchTests.java
+++ b/test/unit/org/apache/cassandra/cql3/BatchTests.java
@@ -37,7 +37,6 @@ public class BatchTests
     private static Cluster cluster;
     private static Session session;
 
-
     private static PreparedStatement counter;
     private static PreparedStatement noncounter;
 
@@ -114,6 +113,12 @@ public class BatchTests
         sendBatch(BatchStatement.Type.UNLOGGED, true, false);
     }
 
+    @Test
+    public void testEmptyBatch()
+    {
+        session.execute("BEGIN BATCH APPLY BATCH");
+        session.execute("BEGIN UNLOGGED BATCH APPLY BATCH");
+    }
 
     @Test(expected = InvalidQueryException.class)
     public void testCounterInLoggedBatch()
@@ -133,8 +138,6 @@ public class BatchTests
         session.execute(b);
     }
 
-
-
     public void sendBatch(BatchStatement.Type type, boolean addCounter, 
boolean addNonCounter)
     {
 

Reply via email to