From ff9b6bb973db7f6ebe650d909d24dcf5aebcfae5 Mon Sep 17 00:00:00 2001 From: Paulo Motta Date: Mon, 5 Oct 2015 15:04:09 -0700 Subject: [PATCH] Improve json2sstable error reporting on nonexistent columns patch by Paulo Motta; reviewed by Ariel Weisberg for CASSANDRA-10401 --- CHANGES.txt | 1 + src/java/org/apache/cassandra/tools/SSTableImport.java | 5 +++++ .../org/apache/cassandra/tools/SSTableImportTest.java | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index 77719691b8..8ff726e41d 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.12 + * Improve json2sstable error reporting on nonexistent columns (CASSANDRA-10401) * (cqlsh) fix COPY using wrong variable name for time_format (CASSANDRA-10633) * Do not run SizeEstimatesRecorder if a node is not a member of the ring (CASSANDRA-9912) * Improve handling of dead nodes in gossip (CASSANDRA-10298) diff --git a/src/java/org/apache/cassandra/tools/SSTableImport.java b/src/java/org/apache/cassandra/tools/SSTableImport.java index 87d52be225..e0f3ef3621 100644 --- a/src/java/org/apache/cassandra/tools/SSTableImport.java +++ b/src/java/org/apache/cassandra/tools/SSTableImport.java @@ -281,6 +281,11 @@ public class SSTableImport */ public int importJson(String jsonFile, String keyspace, String cf, String ssTablePath) throws IOException { + if (Schema.instance.getCFMetaData(keyspace, cf) == null) + throw new IllegalArgumentException(String.format("Unknown keyspace/table %s.%s", + keyspace, + cf)); + ColumnFamily columnFamily = ArrayBackedSortedColumns.factory.create(keyspace, cf); IPartitioner partitioner = DatabaseDescriptor.getPartitioner(); diff --git a/test/unit/org/apache/cassandra/tools/SSTableImportTest.java b/test/unit/org/apache/cassandra/tools/SSTableImportTest.java index a5f05f8ec5..77036e85e7 100644 --- a/test/unit/org/apache/cassandra/tools/SSTableImportTest.java +++ b/test/unit/org/apache/cassandra/tools/SSTableImportTest.java @@ -51,6 +51,15 @@ import org.apache.cassandra.io.sstable.SSTableReader; public class SSTableImportTest extends SchemaLoader { + @Test(expected = IllegalArgumentException.class) + public void testImportUnknownCf() throws IOException, URISyntaxException + { + // Import JSON to temp SSTable file + String jsonUrl = resourcePath("SimpleCF.json"); + File tempSS = tempSSTableFile("Keyspace1", "Standard1"); + new SSTableImport(true).importJson(jsonUrl, "UnknownKeyspace", "UnknownCF", tempSS.getPath()); + } + @Test public void testImportSimpleCf() throws IOException, URISyntaxException {