From 918667929f87a2e8e74913fe6d6e5dd137fe4e4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81s=20de=20la=20Pen=CC=83a?= Date: Mon, 7 Aug 2017 20:26:09 +0100 Subject: [PATCH] Skip materialized view addition if the base table doesn't exist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit patch by Andres de la Peña; reviewed by Jake Luciani for CASSANDRA-13737 --- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/view/ViewManager.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index 799e7f4256..905a436865 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.15 + * 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 fd04b97ce3..0a0fa7b4a7 100644 --- a/src/java/org/apache/cassandra/db/view/ViewManager.java +++ b/src/java/org/apache/cassandra/db/view/ViewManager.java @@ -136,6 +136,15 @@ public class ViewManager public void addView(ViewDefinition 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.viewName, + definition.baseTableId); + return; + } + View view = new View(definition, keyspace.getColumnFamilyStore(definition.baseTableId)); forTable(view.getDefinition().baseTableMetadata()).add(view); viewsByName.put(definition.viewName, view);