[ 
https://issues.apache.org/jira/browse/CASSANDRA-15086?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sam Tunnicliffe updated CASSANDRA-15086:
----------------------------------------
    Test and Documentation Plan: Add additional test to LegacySSTableTest. Run 
upgrade tests and compare against baseline 3.0/3.11 runs
                         Status: Patch Available  (was: In Progress)

This changes the behaviour from throwing IllegalArgumentException to throw a 
new IllegalLegacyColumnException when such a cell is encountered which allows 
the exception handling to be dependent on the context. On the read path, 
including compaction reads of SSTables, we can safely skip the illegal atoms, 
which is equivalent to the pre-3.0 behaviour. In the thrift layer, we can 
forcefully reject any writes or reads with filters or predicates containing 
illegal cells.

The bulk of the patch is mechanical changes to extend either method signatures 
or catch blocks to accommodate the new exception. 

||branch||CI||
|[15086-3.0|https://github.com/beobal/cassandra/tree/15086-3.0]|[circle|https://circleci.com/gh/beobal/workflows/cassandra/tree/cci%2F15086-3.0]|
|[15086-3.11|https://github.com/beobal/cassandra/tree/15086-3.11]|[circle|https://circleci.com/gh/beobal/workflows/cassandra/tree/cci%2F15086-3.11]|

> Illegal column names make legacy sstables unreadable in 3.0/3.x
> ---------------------------------------------------------------
>
>                 Key: CASSANDRA-15086
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15086
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Local/SSTable
>            Reporter: Sam Tunnicliffe
>            Assignee: Sam Tunnicliffe
>            Priority: Normal
>             Fix For: 3.0.x, 3.11.x
>
>
> CASSANDRA-10608 adds extra validation when decoding a bytebuffer representing 
> a legacy cellname. If the table is not COMPACT and the column name component 
> of the cellname refers to a primary key column, an IllegalArgumentException 
> is thrown. It looks like the original intent of 10608 was to prevent Thrift 
> writes from inserting these invalid cells, but the same code path is 
> exercised on the read path. The problem is that this kind of cells may exist 
> in pre-3.0 sstables, either due to Thrift writes or through side loading of 
> externally generated SSTables. Following an upgrade to 3.0, these partitions 
> become unreadable, breaking both the read and compaction paths (and so also 
> upgradesstables). Scrub in 2.1 does not help here as it blindly reproduces 
> the invalid cells.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to