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/06/27 15:30:30 UTC

[cassandra] branch cassandra-3.11 updated (75fde25 -> 83baa27)

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 75fde25  Merge branch 'cassandra-3.0' into cassandra-3.11
     new f4b6e1d  Filter illegal legacy cells when collating rows
     new 83baa27  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 +
 .../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
 ..._illegal_cell_names_indexed-ka-1-Statistics.db} | Bin 4450 -> 4472 bytes
 ...a_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, 269 insertions(+), 154 deletions(-)
 delete mode 100644 src/java/org/apache/cassandra/db/IllegalLegacyColumnException.java
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names_indexed/legacy_tables-legacy_ka_with_illegal_cell_names_indexed-ka-1-CRC.db
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names_indexed/legacy_tables-legacy_ka_with_illegal_cell_names_indexed-ka-1-Data.db
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names_indexed/legacy_tables-legacy_ka_with_illegal_cell_names_indexed-ka-1-Digest.sha1
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names_indexed/legacy_tables-legacy_ka_with_illegal_cell_names_indexed-ka-1-Filter.db
 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_with_illegal_cell_names_indexed/legacy_tables-legacy_ka_with_illegal_cell_names_indexed-ka-1-Index.db
 copy test/data/legacy-sstables/ka/legacy_tables/{legacy_ka_14766/legacy_tables-legacy_ka_14766-ka-1-Statistics.db => legacy_ka_with_illegal_cell_names_indexed/legacy_tables-legacy_ka_with_illegal_cell_names_indexed-ka-1-Statistics.db} (89%)
 copy test/data/legacy-sstables/ka/legacy_tables/{legacy_ka_with_illegal_cell_names/legacy_tables-legacy_ka_with_illegal_cell_names-ka-1-TOC.txt => legacy_ka_with_illegal_cell_names_indexed/legacy_tables-legacy_ka_with_illegal_cell_names_indexed-ka-1-TOC.txt} (100%)
 create mode 100644 test/unit/org/apache/cassandra/cql3/validation/ThriftIllegalColumnsTest.java


---------------------------------------------------------------------
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 83baa27104ba4f8e20ec030c905a3110556bc629
Merge: 75fde25 f4b6e1d
Author: Sam Tunnicliffe <sa...@beobal.com>
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: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org