diff --git a/CHANGES.txt b/CHANGES.txt index 7ccf6c5a89..b5a8dbbc50 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -111,6 +111,7 @@ * Duplicate the buffer before passing it to analyser in SASI operation (CASSANDRA-13512) * Properly evict pstmts from prepared statements cache (CASSANDRA-13641) Merged from 3.0: + * Skip materialized view addition if the base table doesn't exist (CASSANDRA-13737) * Drop table should remove corresponding entries in dropped_columns table (CASSANDRA-13730) * Log warn message until legacy auth tables have been migrated (CASSANDRA-13371) * Fix incorrect [2.1 <- 3.0] serialization of counter cells created in 2.0 (CASSANDRA-13691) diff --git a/src/java/org/apache/cassandra/db/view/ViewManager.java b/src/java/org/apache/cassandra/db/view/ViewManager.java index 84738b1d14..75cfe990ed 100644 --- a/src/java/org/apache/cassandra/db/view/ViewManager.java +++ b/src/java/org/apache/cassandra/db/view/ViewManager.java @@ -137,6 +137,15 @@ public class ViewManager public void addView(ViewMetadata definition) { + // Skip if the base table doesn't exist due to schema propagation issues, see CASSANDRA-13737 + if (!keyspace.hasColumnFamilyStore(definition.baseTableId)) + { + logger.warn("Not adding view {} because the base table {} is unknown", + definition.name, + definition.baseTableId); + return; + } + View view = new View(definition, keyspace.getColumnFamilyStore(definition.baseTableId)); forTable(view.getDefinition().baseTableId).add(view); viewsByName.put(definition.name, view);