Remove unnecessary sync flushing non-CFS indexes

Patch by Sam Tunnicliffe; reviewed by Branimir Lambov for CASSANDRA-9669


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

Branch: refs/heads/trunk
Commit: 81ffc4601952ff3a9fec8493cd27fe52544ea115
Parents: 3303e47
Author: Sam Tunnicliffe <s...@beobal.com>
Authored: Thu May 19 12:04:38 2016 +0100
Committer: Sam Tunnicliffe <s...@beobal.com>
Committed: Tue May 31 09:38:35 2016 +0100

----------------------------------------------------------------------
 .../apache/cassandra/index/SecondaryIndexManager.java    |  8 ++++----
 .../unit/org/apache/cassandra/index/CustomIndexTest.java | 11 +++++++++++
 2 files changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/81ffc460/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java 
b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
index 0a2e128..9635c59 100644
--- a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
@@ -478,10 +478,10 @@ public class SecondaryIndexManager implements 
IndexRegistry
      */
     public void flushAllNonCFSBackedIndexesBlocking()
     {
-        Set<Index> customIndexers = indexes.values().stream()
-                                                    .filter(index -> 
!(index.getBackingTable().isPresent()))
-                                                    
.collect(Collectors.toSet());
-        flushIndexesBlocking(customIndexers);
+        executeAllBlocking(indexes.values()
+                                  .stream()
+                                  .filter(index -> 
!index.getBackingTable().isPresent()),
+                           Index::getBlockingFlushTask);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/cassandra/blob/81ffc460/test/unit/org/apache/cassandra/index/CustomIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/CustomIndexTest.java 
b/test/unit/org/apache/cassandra/index/CustomIndexTest.java
index 9de3606..fa6700b 100644
--- a/test/unit/org/apache/cassandra/index/CustomIndexTest.java
+++ b/test/unit/org/apache/cassandra/index/CustomIndexTest.java
@@ -55,6 +55,17 @@ public class CustomIndexTest extends CQLTester
     }
 
     @Test
+    public void testTruncateWithNonCfsCustomIndex() throws Throwable
+    {
+        // deadlocks and times out the test in the face of the synchronisation
+        // issues described in the comments on CASSANDRA-9669
+        createTable("CREATE TABLE %s (a int, b int, c int, PRIMARY KEY (a))");
+        createIndex("CREATE CUSTOM INDEX b_index ON %s(b) USING 
'org.apache.cassandra.index.StubIndex'");
+        execute("INSERT INTO %s (a, b, c) VALUES (?, ?, ?)", 0, 1, 2);
+        getCurrentColumnFamilyStore().truncateBlocking();
+    }
+
+    @Test
     public void indexControlsIfIncludedInBuildOnNewSSTables() throws Throwable
     {
         createTable("CREATE TABLE %s (a int, b int, PRIMARY KEY (a))");

Reply via email to