You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sa...@apache.org on 2019/05/08 09:09:09 UTC

[cassandra] branch cassandra-3.11 updated (c86f9b8 -> ba01089)

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

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


    from c86f9b8  Merge branch 'cassandra-3.0' into cassandra-3.11
     new daf6c85  Skip cells with illegal column names when reading legacy sstables
     new ba01089  Merge branch 'cassandra-3.0' into cassandra-3.11

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 CHANGES.txt                                        |   1 +
 ...tion.java => IllegalLegacyColumnException.java} |  28 ++++------
 src/java/org/apache/cassandra/db/LegacyLayout.java |  57 +++++++++++++++++----
 src/java/org/apache/cassandra/db/ReadCommand.java  |   2 +-
 .../cassandra/db/UnfilteredDeserializer.java       |   7 +++
 .../cassandra/db/UnknownColumnException.java       |  16 +-----
 .../apache/cassandra/thrift/CassandraServer.java   |  34 ++++++------
 .../apache/cassandra/thrift/ThriftValidation.java  |   5 +-
 ...s-legacy_ka_with_illegal_cell_names-ka-1-CRC.db | Bin 0 -> 8 bytes
 ...-legacy_ka_with_illegal_cell_names-ka-1-Data.db | Bin 0 -> 292 bytes
 ...acy_ka_with_illegal_cell_names-ka-1-Digest.sha1 |   1 +
 ...egacy_ka_with_illegal_cell_names-ka-1-Filter.db | Bin 0 -> 16 bytes
 ...legacy_ka_with_illegal_cell_names-ka-1-Index.db | Bin 0 -> 36 bytes
 ..._ka_with_illegal_cell_names-ka-1-Statistics.db} | Bin 4474 -> 4464 bytes
 ...gacy_ka_with_illegal_cell_names-ka-1-Summary.db | Bin 0 -> 128 bytes
 ...legacy_ka_with_illegal_cell_names-ka-1-TOC.txt} |  10 ++--
 .../apache/cassandra/db/LegacyCellNameTest.java    |  17 +++++-
 .../cassandra/io/sstable/LegacySSTableTest.java    |  36 +++++++++++++
 18 files changed, 144 insertions(+), 70 deletions(-)
 copy src/java/org/apache/cassandra/db/{UnknownColumnException.java => IllegalLegacyColumnException.java} (57%)
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names/legacy_tables-legacy_ka_with_illegal_cell_names-ka-1-CRC.db
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names/legacy_tables-legacy_ka_with_illegal_cell_names-ka-1-Data.db
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names/legacy_tables-legacy_ka_with_illegal_cell_names-ka-1-Digest.sha1
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names/legacy_tables-legacy_ka_with_illegal_cell_names-ka-1-Filter.db
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names/legacy_tables-legacy_ka_with_illegal_cell_names-ka-1-Index.db
 copy test/data/legacy-sstables/ka/legacy_tables/{legacy_ka_14912/legacy_tables-legacy_ka_14912-ka-1-Statistics.db => legacy_ka_with_illegal_cell_names/legacy_tables-legacy_ka_with_illegal_cell_names-ka-1-Statistics.db} (92%)
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names/legacy_tables-legacy_ka_with_illegal_cell_names-ka-1-Summary.db
 copy test/data/legacy-sstables/{jb/Keyspace1/Keyspace1-Standard1-jb-0-TOC.txt => ka/legacy_tables/legacy_ka_with_illegal_cell_names/legacy_tables-legacy_ka_with_illegal_cell_names-ka-1-TOC.txt} (100%)


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


[cassandra] 01/01: Merge branch 'cassandra-3.0' into cassandra-3.11

Posted by sa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ba01089a0f08c6d8429a2de851d360f9c5af1527
Merge: c86f9b8 daf6c85
Author: Sam Tunnicliffe <sa...@beobal.com>
AuthorDate: Wed May 8 10:03:42 2019 +0100

    Merge branch 'cassandra-3.0' into cassandra-3.11

 CHANGES.txt                                        |   1 +
 ...tion.java => IllegalLegacyColumnException.java} |  28 ++++------
 src/java/org/apache/cassandra/db/LegacyLayout.java |  57 +++++++++++++++++----
 src/java/org/apache/cassandra/db/ReadCommand.java  |   2 +-
 .../cassandra/db/UnfilteredDeserializer.java       |   7 +++
 .../cassandra/db/UnknownColumnException.java       |  16 +-----
 .../apache/cassandra/thrift/CassandraServer.java   |  34 ++++++------
 .../apache/cassandra/thrift/ThriftValidation.java  |   5 +-
 ...s-legacy_ka_with_illegal_cell_names-ka-1-CRC.db | Bin 0 -> 8 bytes
 ...-legacy_ka_with_illegal_cell_names-ka-1-Data.db | Bin 0 -> 292 bytes
 ...acy_ka_with_illegal_cell_names-ka-1-Digest.sha1 |   1 +
 ...egacy_ka_with_illegal_cell_names-ka-1-Filter.db | Bin 0 -> 16 bytes
 ...legacy_ka_with_illegal_cell_names-ka-1-Index.db | Bin 0 -> 36 bytes
 ...y_ka_with_illegal_cell_names-ka-1-Statistics.db | Bin 0 -> 4464 bytes
 ...gacy_ka_with_illegal_cell_names-ka-1-Summary.db | Bin 0 -> 128 bytes
 ...-legacy_ka_with_illegal_cell_names-ka-1-TOC.txt |   8 +++
 .../apache/cassandra/db/LegacyCellNameTest.java    |  17 +++++-
 .../cassandra/io/sstable/LegacySSTableTest.java    |  36 +++++++++++++
 18 files changed, 147 insertions(+), 65 deletions(-)

diff --cc CHANGES.txt
index 0506da7,0dac500..0deaa97
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,7 -1,5 +1,8 @@@
 -3.0.19
 +3.11.5
 + * Fixed nodetool cfstats printing index name twice (CASSANDRA-14903)
 + * Add flag to disable SASI indexes, and warnings on creation (CASSANDRA-14866)
 +Merged from 3.0:
+  * Skip cells with illegal column names when reading legacy sstables (CASSANDRA-15086)
   * Fix assorted gossip races and add related runtime checks (CASSANDRA-15059)
   * Fix mixed mode partition range scans with limit (CASSANDRA-15072)
   * cassandra-stress works with frozen collections: list and set (CASSANDRA-14907)
diff --cc src/java/org/apache/cassandra/db/LegacyLayout.java
index 87b5d58,cfaa71f..50fd945
--- a/src/java/org/apache/cassandra/db/LegacyLayout.java
+++ b/src/java/org/apache/cassandra/db/LegacyLayout.java
@@@ -187,12 -188,18 +189,18 @@@ public abstract class LegacyLayou
          {
              // If it's a compact table, it means the column is in fact a "dynamic" one
              if (metadata.isCompactTable())
 -                return new LegacyCellName(new Clustering(column), metadata.compactValueColumn(), null);
 +                return new LegacyCellName(Clustering.make(column), metadata.compactValueColumn(), null);
  
              if (def == null)
+             {
                  throw new UnknownColumnException(metadata, column);
+             }
              else
-                 throw new IllegalArgumentException("Cannot add primary key column to partition update");
+             {
+                 noSpamLogger.warn("Illegal cell name for CQL3 table {}.{}. {} is defined as a primary key column",
+                                  metadata.ksName, metadata.cfName, stringify(column));
+                 throw new IllegalLegacyColumnException(metadata, column);
+             }
          }
  
          ByteBuffer collectionElement = metadata.isCompound() ? CompositeType.extractComponent(cellname, metadata.comparator.size() + 1) : null;
diff --cc src/java/org/apache/cassandra/thrift/CassandraServer.java
index 444a938,3a41df0..868f937
--- a/src/java/org/apache/cassandra/thrift/CassandraServer.java
+++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java
@@@ -2203,9 -2176,9 +2203,9 @@@ public class CassandraServer implement
                  PartitionUpdate update = PartitionUpdate.singleRowUpdate(metadata, key, BTreeRow.singleCellRow(name.clustering, cell));
  
                  org.apache.cassandra.db.Mutation mutation = new org.apache.cassandra.db.Mutation(update);
 -                doInsert(consistency_level, Arrays.asList(new CounterMutation(mutation, ThriftConversion.fromThrift(consistency_level))));
 +                doInsert(consistency_level, Arrays.asList(new CounterMutation(mutation, ThriftConversion.fromThrift(consistency_level))), queryStartNanoTime);
              }
-             catch (MarshalException|UnknownColumnException e)
+             catch (MarshalException | UnknownColumnException | IllegalLegacyColumnException e)
              {
                  throw new InvalidRequestException(e.getMessage());
              }
diff --cc src/java/org/apache/cassandra/thrift/ThriftValidation.java
index 575db66,e7a344a..602f15a
--- a/src/java/org/apache/cassandra/thrift/ThriftValidation.java
+++ b/src/java/org/apache/cassandra/thrift/ThriftValidation.java
@@@ -464,9 -464,10 +465,9 @@@ public class ThriftValidatio
          try
          {
              LegacyLayout.LegacyCellName cn = LegacyLayout.decodeCellName(metadata, scName, column.name);
 -            cn.column.validateCellValue(column.value);
 -
 +            cn.column.type.validateCellValue(column.value);
          }
-         catch (UnknownColumnException e)
+         catch (UnknownColumnException | IllegalLegacyColumnException e)
          {
              throw new org.apache.cassandra.exceptions.InvalidRequestException(e.getMessage());
          }


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