[
https://issues.apache.org/jira/browse/CASSANDRA-6869?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13947951#comment-13947951
]
Sylvain Lebresne commented on CASSANDRA-6869:
---------------------------------------------
bq. if version < 2.0 and isSuper() (because hints and batchlog might still
contain those serialized mutations)
Oh, that's why that code was still there. I just assumed we forgot to remove
it. Well, the initial patch was really just about the sstable format and
"fixing" the problem on that ticket so re-attaching a first patch that address
the nits but revert that part for now.
This being said, I think it's silly to keep code around for messaging versions
we don't support just because of the remote chance there may be very old hints
remaining. Since we do force users to update the cluster to 2.0 first anyway,
the chance that hints from 1.2 remains when upgrading to 2.1 is very slim
anyway. So adding a 2nd patch that add a one-time check of the hints table on
upgrade to make sure we don't indeed have remaining old hints (if we have, we
ask the user to force delivery because upgrading). With that, the 3rd patch
just remove the remainder of pre-2.0 compatibility code. I'll note that the
patch don't deal with batchLog because it has it's own (bigger) problem:
CASSANDRA-6931.
> Broken 1.2 sstables support in 2.1
> ----------------------------------
>
> Key: CASSANDRA-6869
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6869
> Project: Cassandra
> Issue Type: Bug
> Reporter: Aleksey Yeschenko
> Assignee: Sylvain Lebresne
> Fix For: 2.1 beta2
>
> Attachments: 0001-Drop-support-for-pre-2.0-sstables.txt,
> 0002-Check-for-remaining-1.2-hints-when-upgrading-to-2.1.txt,
> 0003-Remove-remnant-of-pre-2.0-messaging-format.txt
>
>
> CASSANDRA-5417 has broken 1.2 (ic) sstables support in at least two ways.
> 1. CFMetaData.getOnDiskSerializer(), used by SSTableNamesIterator and
> IndexedSliceReader, doesn't account for pre-2.0 supercolumn sstables
> 2. More importantly, ACCNT.CompositeDeserializer doesn't handle ic tables'
> cell counts, and maybeReadNext() might throw EOFException while expecting the
> partition end marker. SimpleDeserializer is likely just as broken.
> I'd expect more issues like this, but less obvious, in the code, and thus am
> torn between forcing people to run upgradesstables on 2.0 and actually fixing
> these issues, and hoping that we haven't missed anything.
> Implementing a supercolumn aware AtomDeserializer is not hard, fixing
> CompositeDeserializer and SimpleDeserializer isn't very hard either, but I
> really am worried about stuff that's less obvious. Plus, if we drop that
> support, we can get rid of some legacy supercolumn code in 2.1. Minus,
> obviously, is a bit of extra pain for 2.0->2.1 upgraders still having 1.2-
> sstables around.
--
This message was sent by Atlassian JIRA
(v6.2#6252)