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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
