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 83baa27104ba4f8e20ec030c905a3110556bc629
Merge: 75fde25 f4b6e1d
Author: Sam Tunnicliffe <[email protected]>
AuthorDate: Thu Jun 27 16:25:43 2019 +0100

    Merge branch 'cassandra-3.0' into cassandra-3.11

 CHANGES.txt                                        |   1 +
 .../cassandra/db/IllegalLegacyColumnException.java |  41 --------
 src/java/org/apache/cassandra/db/LegacyLayout.java |  76 +++++---------
 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  |  10 +-
 ..._ka_with_illegal_cell_names_indexed-ka-1-CRC.db | Bin 0 -> 8 bytes
 ...ka_with_illegal_cell_names_indexed-ka-1-Data.db | Bin 0 -> 6487 bytes
 ...ith_illegal_cell_names_indexed-ka-1-Digest.sha1 |   1 +
 ..._with_illegal_cell_names_indexed-ka-1-Filter.db | Bin 0 -> 16 bytes
 ...a_with_illegal_cell_names_indexed-ka-1-Index.db | Bin 0 -> 453 bytes
 ...h_illegal_cell_names_indexed-ka-1-Statistics.db | Bin 0 -> 4472 bytes
 ...ka_with_illegal_cell_names_indexed-ka-1-TOC.txt |   8 ++
 .../cql3/validation/ThriftIllegalColumnsTest.java  | 100 +++++++++++++++++++
 .../apache/cassandra/db/LegacyCellNameTest.java    |  18 +++-
 .../cassandra/io/sstable/LegacySSTableTest.java    | 109 ++++++++++++++++-----
 18 files changed, 273 insertions(+), 150 deletions(-)

diff --cc CHANGES.txt
index e2aa652,d34406b..e433f7d
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,8 -1,5 +1,9 @@@
 -3.0.19
 +3.11.5
 + * Fix cassandra-env.sh to use $CASSANDRA_CONF to find cassandra-jaas.config 
(CASSANDRA-14305)
 + * 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:
+  * Skipping illegal legacy cells can break reverse iteration of indexed 
partitions (CASSANDRA-15178)
   * Handle paging states serialized with a different version than the 
session's (CASSANDRA-15176)
   * Throw IOE instead of asserting on unsupporter peer versions 
(CASSANDRA-15066)
   * Update token metadata when handling MOVING/REMOVING_TOKEN events 
(CASSANDRA-15120)
diff --cc src/java/org/apache/cassandra/db/LegacyLayout.java
index 50fd945,b03f56e..765d39b
--- a/src/java/org/apache/cassandra/db/LegacyLayout.java
+++ b/src/java/org/apache/cassandra/db/LegacyLayout.java
@@@ -185,22 -184,16 +185,16 @@@ public abstract class LegacyLayou
              return new LegacyCellName(clustering, null, null);
  
          ColumnDefinition def = metadata.getColumnDefinition(column);
-         if ((def == null) || def.isPrimaryKeyColumn())
+ 
+         if (metadata.isCompactTable())
          {
-             // If it's a compact table, it means the column is in fact a 
"dynamic" one
-             if (metadata.isCompactTable())
+             if (def == null || def.isPrimaryKeyColumn())
+                 // If it's a compact table, it means the column is in fact a 
"dynamic" one
 -                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
-             {
-                 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);
-             }
+         }
+         else if (def == null)
+         {
+             throw new UnknownColumnException(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 868f937,163eb2d..444a938
--- 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 | 
IllegalLegacyColumnException e)
+             catch (MarshalException|UnknownColumnException e)
              {
                  throw new InvalidRequestException(e.getMessage());
              }
diff --cc src/java/org/apache/cassandra/thrift/ThriftValidation.java
index 602f15a,4b208ba..1b61fd5
--- a/src/java/org/apache/cassandra/thrift/ThriftValidation.java
+++ b/src/java/org/apache/cassandra/thrift/ThriftValidation.java
@@@ -465,9 -465,13 +466,12 @@@ public class ThriftValidatio
          try
          {
              LegacyLayout.LegacyCellName cn = 
LegacyLayout.decodeCellName(metadata, scName, column.name);
+             if (cn.column.isPrimaryKeyColumn())
+                 throw new 
org.apache.cassandra.exceptions.InvalidRequestException(String.format("Cannot 
add primary key column %s to partition update", cn.column.name));
+ 
 -            cn.column.validateCellValue(column.value);
 -
 +            cn.column.type.validateCellValue(column.value);
          }
-         catch (UnknownColumnException | IllegalLegacyColumnException e)
+         catch (UnknownColumnException e)
          {
              throw new 
org.apache.cassandra.exceptions.InvalidRequestException(e.getMessage());
          }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to