cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-6869) Broken 1.2 sstables support in 2.1
Date Wed, 26 Mar 2014 14:18:15 GMT

    [ 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)

Mime
View raw message