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 <tylerlho...@gmail.com>
Authored: Fri Jul 15 12:35:59 2016 -0500
Committer: Tyler Hobbs <tylerlho...@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);

Reply via email to