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);