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 17:36:42 UTC
cassandra git commit: Ninja: add assertions for missing partition
keys when loading table
Repository: cassandra
Updated Branches:
refs/heads/cassandra-3.9 2764e85a5 -> b0ab12f4d
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/cassandra-3.9
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);