cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From marc...@apache.org
Subject [08/18] cassandra git commit: Don't skip sstables based on maxLocalDeletionTime
Date Fri, 21 Oct 2016 07:15:43 GMT
Don't skip sstables based on maxLocalDeletionTime

Patch by Cameron Zemek; reviewed by marcuse for CASSANDRA-12765


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

Branch: refs/heads/trunk
Commit: f7ded1c59287f309f7cd89d576b684c8473bb632
Parents: 83ae5f3
Author: Cameron Zemek <cameron@instaclustr.com>
Authored: Tue Oct 18 11:09:23 2016 +0200
Committer: Marcus Eriksson <marcuse@apache.org>
Committed: Fri Oct 21 08:38:40 2016 +0200

----------------------------------------------------------------------
 CHANGES.txt                                     |  4 ++
 .../cassandra/db/CollationController.java       | 10 ++---
 .../db/CollationControllerCQLTest.java          | 46 ++++++++++++++++++++
 3 files changed, 53 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f7ded1c5/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index b778444..e922635 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,7 @@
+2.1.17
+ * Don't skip sstables based on maxLocalDeletionTime (CASSANDRA-12765)
+
+
 2.1.16
  * Avoid infinitely looping result set when paging SELECT queries with
    an IN clause with duplicate keys by treating the IN values as a set instead

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f7ded1c5/src/java/org/apache/cassandra/db/CollationController.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/CollationController.java b/src/java/org/apache/cassandra/db/CollationController.java
index 8a966bc..0f2674e 100644
--- a/src/java/org/apache/cassandra/db/CollationController.java
+++ b/src/java/org/apache/cassandra/db/CollationController.java
@@ -258,13 +258,9 @@ public class CollationController
                 if (!filter.shouldInclude(sstable))
                 {
                     nonIntersectingSSTables++;
-                    // sstable contains no tombstone if maxLocalDeletionTime == Integer.MAX_VALUE,
so we can safely skip those entirely
-                    if (sstable.getSSTableMetadata().maxLocalDeletionTime != Integer.MAX_VALUE)
-                    {
-                        if (skippedSSTables == null)
-                            skippedSSTables = new ArrayList<>();
-                        skippedSSTables.add(sstable);
-                    }
+                    if (skippedSSTables == null)
+                        skippedSSTables = new ArrayList<>();
+                    skippedSSTables.add(sstable);
                     continue;
                 }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f7ded1c5/test/unit/org/apache/cassandra/db/CollationControllerCQLTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/CollationControllerCQLTest.java b/test/unit/org/apache/cassandra/db/CollationControllerCQLTest.java
new file mode 100644
index 0000000..376678a
--- /dev/null
+++ b/test/unit/org/apache/cassandra/db/CollationControllerCQLTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cassandra.db;
+
+import org.junit.Test;
+
+import org.apache.cassandra.cql3.CQLTester;
+import org.apache.cassandra.cql3.UntypedResultSet;
+import static org.junit.Assert.assertTrue;
+
+public class CollationControllerCQLTest extends CQLTester
+{
+    @Test
+    public void partitionLevelDeletionTest() throws Throwable
+    {
+        createTable("CREATE TABLE %s (bucket_id TEXT,name TEXT,data TEXT,PRIMARY KEY (bucket_id,
name))");
+        execute("insert into %s (bucket_id, name, data) values ('8772618c9009cf8f5a5e0c18',
'test', 'hello')");
+        getCurrentColumnFamilyStore().forceBlockingFlush();
+        execute("insert into %s (bucket_id, name, data) values ('8772618c9009cf8f5a5e0c19',
'test2', 'hello');");
+        execute("delete from %s where bucket_id = '8772618c9009cf8f5a5e0c18'");
+        getCurrentColumnFamilyStore().forceBlockingFlush();
+        UntypedResultSet res = execute("select * from %s where bucket_id = '8772618c9009cf8f5a5e0c18'
and name = 'test'");
+        assertTrue(res.isEmpty());
+    }
+
+    private ColumnFamilyStore getCurrentColumnFamilyStore()
+    {
+        return Keyspace.open(KEYSPACE).getColumnFamilyStore(currentTable());
+    }
+}


Mime
View raw message