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:10 UTC

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

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