You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ty...@apache.org on 2016/07/15 22:57:24 UTC

[1/5] cassandra git commit: Ninja: add assertions for missing partition keys when loading table

Repository: cassandra
Updated Branches:
  refs/heads/trunk b3dcb063b -> 2522873be


Ninja: add assertions for missing partition keys when loading table

Done to help debug test failures like CASSANDRA-12213


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

Branch: refs/heads/trunk
Commit: b0ab12f4d52f78d30bb514d7a5ebb49c34a399b4
Parents: 2764e85
Author: Tyler Hobbs <ty...@gmail.com>
Authored: Fri Jul 15 12:35:59 2016 -0500
Committer: Tyler Hobbs <ty...@gmail.com>
Committed: Fri Jul 15 12:35:59 2016 -0500

----------------------------------------------------------------------
 src/java/org/apache/cassandra/config/CFMetaData.java     | 3 +++
 src/java/org/apache/cassandra/schema/SchemaKeyspace.java | 6 ++++++
 2 files changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/b0ab12f4/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index 4708033..4de4f7b 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -286,6 +286,9 @@ public final class CFMetaData
         // A compact table should always have a clustering
         assert isCQLTable() || !clusteringColumns.isEmpty() : String.format("For table %s.%s, isDense=%b, isCompound=%b, clustering=%s", ksName, cfName, isDense, isCompound, clusteringColumns);
 
+        // All tables should have a partition key
+        assert !partitionKeyColumns.isEmpty() : String.format("Have no partition keys for table %s.%s", ksName, cfName);
+
         this.partitionKeyColumns = partitionKeyColumns;
         this.clusteringColumns = clusteringColumns;
         this.partitionColumns = partitionColumns;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/b0ab12f4/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
index dd0bb46..8e3961e 100644
--- a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
+++ b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
@@ -951,6 +951,12 @@ public final class SchemaKeyspace
         boolean isCompound = flags.contains(CFMetaData.Flag.COMPOUND);
 
         List<ColumnDefinition> columns = fetchColumns(keyspaceName, tableName, types);
+        if (!columns.stream().anyMatch(ColumnDefinition::isPartitionKey))
+        {
+            String msg = String.format("Table %s.%s did not have any partition key columns in the schema tables", keyspaceName, tableName);
+            throw new AssertionError(msg);
+        }
+
         Map<ByteBuffer, CFMetaData.DroppedColumn> droppedColumns = fetchDroppedColumns(keyspaceName, tableName);
         Indexes indexes = fetchIndexes(keyspaceName, tableName);
         Triggers triggers = fetchTriggers(keyspaceName, tableName);


[4/5] cassandra git commit: Ninja: add assertions for missing partition keys when loading table

Posted by ty...@apache.org.
Ninja: add assertions for missing partition keys when loading table

Done to help debug test failures like CASSANDRA-12213


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

Branch: refs/heads/trunk
Commit: 78a05d4f7c60605e0e57d2d9d5e72e19081e4e40
Parents: b3dcb06
Author: Tyler Hobbs <ty...@gmail.com>
Authored: Fri Jul 15 12:35:59 2016 -0500
Committer: Tyler Hobbs <ty...@gmail.com>
Committed: Fri Jul 15 17:56:38 2016 -0500

----------------------------------------------------------------------
 src/java/org/apache/cassandra/config/CFMetaData.java     | 3 +++
 src/java/org/apache/cassandra/schema/SchemaKeyspace.java | 6 ++++++
 2 files changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/78a05d4f/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index 4708033..4de4f7b 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -286,6 +286,9 @@ public final class CFMetaData
         // A compact table should always have a clustering
         assert isCQLTable() || !clusteringColumns.isEmpty() : String.format("For table %s.%s, isDense=%b, isCompound=%b, clustering=%s", ksName, cfName, isDense, isCompound, clusteringColumns);
 
+        // All tables should have a partition key
+        assert !partitionKeyColumns.isEmpty() : String.format("Have no partition keys for table %s.%s", ksName, cfName);
+
         this.partitionKeyColumns = partitionKeyColumns;
         this.clusteringColumns = clusteringColumns;
         this.partitionColumns = partitionColumns;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/78a05d4f/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
index dd0bb46..8e3961e 100644
--- a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
+++ b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
@@ -951,6 +951,12 @@ public final class SchemaKeyspace
         boolean isCompound = flags.contains(CFMetaData.Flag.COMPOUND);
 
         List<ColumnDefinition> columns = fetchColumns(keyspaceName, tableName, types);
+        if (!columns.stream().anyMatch(ColumnDefinition::isPartitionKey))
+        {
+            String msg = String.format("Table %s.%s did not have any partition key columns in the schema tables", keyspaceName, tableName);
+            throw new AssertionError(msg);
+        }
+
         Map<ByteBuffer, CFMetaData.DroppedColumn> droppedColumns = fetchDroppedColumns(keyspaceName, tableName);
         Indexes indexes = fetchIndexes(keyspaceName, tableName);
         Triggers triggers = fetchTriggers(keyspaceName, tableName);


[5/5] cassandra git commit: Merge branch 'cassandra-3.9' into trunk

Posted by ty...@apache.org.
Merge branch 'cassandra-3.9' into trunk


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

Branch: refs/heads/trunk
Commit: 2522873be745e2793b464809704209bebf3aeca9
Parents: 78a05d4 136f6b1
Author: Tyler Hobbs <ty...@gmail.com>
Authored: Fri Jul 15 17:56:44 2016 -0500
Committer: Tyler Hobbs <ty...@gmail.com>
Committed: Fri Jul 15 17:56:44 2016 -0500

----------------------------------------------------------------------
 src/java/org/apache/cassandra/db/ReadResponse.java | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[3/5] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.9

Posted by ty...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.9


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

Branch: refs/heads/trunk
Commit: 136f6b1c740184da6377ffc3afc9d3f03ba1a14e
Parents: b0ab12f 557c596
Author: Tyler Hobbs <ty...@gmail.com>
Authored: Fri Jul 15 17:56:32 2016 -0500
Committer: Tyler Hobbs <ty...@gmail.com>
Committed: Fri Jul 15 17:56:32 2016 -0500

----------------------------------------------------------------------
 src/java/org/apache/cassandra/db/ReadResponse.java | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/136f6b1c/src/java/org/apache/cassandra/db/ReadResponse.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/ReadResponse.java
index 140652d,2304cb4..05ebd00
--- a/src/java/org/apache/cassandra/db/ReadResponse.java
+++ b/src/java/org/apache/cassandra/db/ReadResponse.java
@@@ -282,12 -282,17 +282,17 @@@ public abstract class ReadRespons
  
                      // Pre-3.0, we didn't have a way to express exclusivity for non-composite comparators, so all slices were
                      // inclusive on both ends. If we have exclusive slice ends, we need to filter the results here.
+                     UnfilteredRowIterator iterator;
                      if (!command.metadata().isCompound())
-                         return ThriftResultsMerger.maybeWrap(
-                                 partition.unfilteredIterator(command.columnFilter(), filter.getSlices(command.metadata()), filter.isReversed()), command.nowInSec());
- 
-                     return ThriftResultsMerger.maybeWrap(
-                             partition.unfilteredIterator(command.columnFilter(), Slices.ALL, filter.isReversed()), command.nowInSec());
 -                        iterator = filter.filter(partition.sliceableUnfilteredIterator(command.columnFilter(), filter.isReversed()));
++                        iterator = partition.unfilteredIterator(command.columnFilter(), filter.getSlices(command.metadata()), filter.isReversed());
+                     else
+                         iterator = partition.unfilteredIterator(command.columnFilter(), Slices.ALL, filter.isReversed());
+ 
+                     // Wrap results with a ThriftResultMerger only if they're intended for the thrift command.
+                     if (command.isForThrift())
+                         return ThriftResultsMerger.maybeWrap(iterator, command.nowInSec());
+                     else
+                         return iterator;
                  }
              };
          }


[2/5] cassandra git commit: Avoid wrapping results with ThriftResultsMerger if command is not for thrift

Posted by ty...@apache.org.
Avoid wrapping results with ThriftResultsMerger if command is not for thrift

Patch by Alex Petrov; reviewed by Tyler Hobbs for CASSANDRA-12193.


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

Branch: refs/heads/trunk
Commit: 557c59607fa9eb2014a7905cfc0eb3dbcd043cab
Parents: 84426d1
Author: Alex Petrov <ol...@gmail.com>
Authored: Fri Jul 15 17:49:16 2016 -0500
Committer: Tyler Hobbs <ty...@gmail.com>
Committed: Fri Jul 15 17:49:16 2016 -0500

----------------------------------------------------------------------
 src/java/org/apache/cassandra/db/ReadResponse.java | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/557c5960/src/java/org/apache/cassandra/db/ReadResponse.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ReadResponse.java b/src/java/org/apache/cassandra/db/ReadResponse.java
index 12a200f..2304cb4 100644
--- a/src/java/org/apache/cassandra/db/ReadResponse.java
+++ b/src/java/org/apache/cassandra/db/ReadResponse.java
@@ -282,12 +282,17 @@ public abstract class ReadResponse
 
                     // Pre-3.0, we didn't have a way to express exclusivity for non-composite comparators, so all slices were
                     // inclusive on both ends. If we have exclusive slice ends, we need to filter the results here.
+                    UnfilteredRowIterator iterator;
                     if (!command.metadata().isCompound())
-                        return ThriftResultsMerger.maybeWrap(
-                                filter.filter(partition.sliceableUnfilteredIterator(command.columnFilter(), filter.isReversed())), command.nowInSec());
-
-                    return ThriftResultsMerger.maybeWrap(
-                            partition.unfilteredIterator(command.columnFilter(), Slices.ALL, filter.isReversed()), command.nowInSec());
+                        iterator = filter.filter(partition.sliceableUnfilteredIterator(command.columnFilter(), filter.isReversed()));
+                    else
+                        iterator = partition.unfilteredIterator(command.columnFilter(), Slices.ALL, filter.isReversed());
+
+                    // Wrap results with a ThriftResultMerger only if they're intended for the thrift command.
+                    if (command.isForThrift())
+                        return ThriftResultsMerger.maybeWrap(iterator, command.nowInSec());
+                    else
+                        return iterator;
                 }
             };
         }