You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mc...@apache.org on 2019/11/15 18:04:20 UTC

[cassandra] branch cassandra-3.11 updated: Fix LegacyLayout to have same behavior as 2.x when handling unknown column names

This is an automated email from the ASF dual-hosted git repository.

mck pushed a commit to branch cassandra-3.11
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cassandra-3.11 by this push:
     new 31a86f8  Fix LegacyLayout to have same behavior as 2.x when handling unknown column names
31a86f8 is described below

commit 31a86f891b00ec0db20fcef4919dce63be7bf31d
Author: Cameron Zemek <ca...@instaclustr.com>
AuthorDate: Fri Nov 1 15:36:03 2019 +1000

    Fix LegacyLayout to have same behavior as 2.x when handling unknown column names
    
     patch by Cameron Zemek; reviewed by Mick Semb Wever for CASSANDRA-15081
---
 CHANGES.txt                                              |   1 +
 src/java/org/apache/cassandra/db/LegacyLayout.java       |   8 ++++----
 ...legacy_tables-legacy_ka_15081-ka-1-CompressionInfo.db | Bin 0 -> 43 bytes
 .../legacy_tables-legacy_ka_15081-ka-1-Data.db           | Bin 0 -> 76 bytes
 .../legacy_tables-legacy_ka_15081-ka-1-Digest.sha1       |   1 +
 .../legacy_tables-legacy_ka_15081-ka-1-Filter.db         | Bin 0 -> 16 bytes
 .../legacy_tables-legacy_ka_15081-ka-1-Index.db          | Bin 0 -> 18 bytes
 .../legacy_tables-legacy_ka_15081-ka-1-Statistics.db     | Bin 0 -> 4438 bytes
 .../legacy_tables-legacy_ka_15081-ka-1-Summary.db        | Bin 0 -> 92 bytes
 .../legacy_tables-legacy_ka_15081-ka-1-TOC.txt           |   8 ++++++++
 .../apache/cassandra/io/sstable/LegacySSTableTest.java   |  13 ++++++++++++-
 11 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index c1480a4..8c52f34 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.11.6
+ * Fix LegacyLayout to have same behavior as 2.x when handling unknown column names (CASSANDRA-15081)
 Merged from 3.0:
  * Minimize clustering values in metadata collector (CASSANDRA-15400)
  * Avoid over-trimming of results in mixed mode clusters (CASSANDRA-15405)
diff --git a/src/java/org/apache/cassandra/db/LegacyLayout.java b/src/java/org/apache/cassandra/db/LegacyLayout.java
index bbef11d..09f9cfa 100644
--- a/src/java/org/apache/cassandra/db/LegacyLayout.java
+++ b/src/java/org/apache/cassandra/db/LegacyLayout.java
@@ -1213,10 +1213,10 @@ public abstract class LegacyLayout
             // but we don't do this here and re-throw the exception because the calling code sometimes has to know
             // about this happening. This does mean code calling this method should handle this case properly.
             if (!metadata.ksName.equals(SchemaConstants.SYSTEM_KEYSPACE_NAME) && metadata.getDroppedColumnDefinition(e.columnName) == null)
-                throw new IllegalStateException(String.format("Got cell for unknown column %s in sstable of %s.%s: " +
-                                                              "This suggest a problem with the schema which doesn't list " +
-                                                              "this column. Even if that column was dropped, it should have " +
-                                                              "been listed as such", metadata.ksName, metadata.cfName, UTF8Type.instance.compose(e.columnName)), e);
+                logger.warn(String.format("Got cell for unknown column %s in sstable of %s.%s: " +
+                                          "This suggest a problem with the schema which doesn't list " +
+                                          "this column. Even if that column was dropped, it should have " +
+                                          "been listed as such", metadata.ksName, metadata.cfName, UTF8Type.instance.compose(e.columnName)), e);
 
             throw e;
         }
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-CompressionInfo.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-CompressionInfo.db
new file mode 100644
index 0000000..3793e50
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Data.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Data.db
new file mode 100644
index 0000000..94c6f93
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Data.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Digest.sha1 b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Digest.sha1
new file mode 100644
index 0000000..60bd60d
--- /dev/null
+++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Digest.sha1
@@ -0,0 +1 @@
+718738748
\ No newline at end of file
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Filter.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Filter.db
new file mode 100644
index 0000000..00a88b4
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Filter.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Index.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Index.db
new file mode 100644
index 0000000..c3b42d8
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Index.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Statistics.db
new file mode 100644
index 0000000..d708358
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Statistics.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Summary.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Summary.db
new file mode 100644
index 0000000..6bfc8aa
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Summary.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-TOC.txt b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-TOC.txt
new file mode 100644
index 0000000..5ece1a1
--- /dev/null
+++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-TOC.txt
@@ -0,0 +1,8 @@
+Digest.sha1
+Data.db
+Statistics.db
+Summary.db
+Index.db
+TOC.txt
+Filter.db
+CompressionInfo.db
diff --git a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
index a08e7da..e665f86 100644
--- a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
@@ -110,7 +110,7 @@ public class LegacySSTableTest
     public static void defineSchema() throws ConfigurationException
     {
         String scp = System.getProperty(LEGACY_SSTABLE_PROP);
-        Assert.assertNotNull("System property " + LEGACY_SSTABLE_ROOT + " not set", scp);
+        Assert.assertNotNull("System property " + LEGACY_SSTABLE_PROP + " not set", scp);
         
         LEGACY_SSTABLE_ROOT = new File(scp).getAbsoluteFile();
         Assert.assertTrue("System property " + LEGACY_SSTABLE_ROOT + " does not specify a directory", LEGACY_SSTABLE_ROOT.isDirectory());
@@ -437,6 +437,17 @@ public class LegacySSTableTest
     }
 
     @Test
+    public void test15081() throws Exception
+    {
+        QueryProcessor.executeInternal("CREATE TABLE legacy_tables.legacy_ka_15081 (id int primary key, payload text)");
+        loadLegacyTable("legacy_%s_15081%s", "ka", "");
+        UntypedResultSet results =
+            QueryProcessor.executeOnceInternal(
+                String.format("SELECT * FROM legacy_tables.legacy_ka_15081"));
+        assertRows(results, row(1, "hello world"));
+    }
+
+    @Test
     public void testReadingLegacyTablesWithIllegalCellNames() throws Exception {
         /**
          * The sstable can be generated externally with SSTableSimpleUnsortedWriter:


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org