[
https://issues.apache.org/jira/browse/CASSANDRA-13237?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sylvain Lebresne updated CASSANDRA-13237:
-----------------------------------------
Status: Patch Available (was: Open)
Attaching patches for the problem below:
| [13237-3.0|https://github.com/pcmanus/cassandra/commits/13237-3.0] |
[utests|http://cassci.datastax.com/job/pcmanus-13237-3.0-testall] |
[dtests|http://cassci.datastax.com/job/pcmanus-13237-3.0-dtest] |
| [13237-3.11|https://github.com/pcmanus/cassandra/commits/13237-3.11] |
[utests|http://cassci.datastax.com/job/pcmanus-13237-3.11-testall] |
[dtests|http://cassci.datastax.com/job/pcmanus-13237-3.11-dtest] |
| [13237-trunk|https://github.com/pcmanus/cassandra/commits/13237-trunk] |
[utests|http://cassci.datastax.com/job/pcmanus-13237-trunk-testall] |
[dtests|http://cassci.datastax.com/job/pcmanus-13237-trunk-dtest] |
The first commit of the 3.0/3.11 patches is actually not doing anything but
just adding a unit test that shows we can indeed create a range tombstone
boundary that have the same deletion on both sides. For that, and because we
don't have an easy way to actually write old sstable, the patch also refactor
{{UnfilteredDeserializer.OldFormatDeserializer}} so that it can be unit tested.
So while the diff may look "large-ish", it's really just moving some code
around for the test purposes.
The 2nd commit does 2 things:
# it fixes the legacy deserializer to stop doing this.
# it update the assertion in {{DataResolver}} that breaks with such boundaries
(again, same deletion on both side of the boundary).
Not that while it may sound like the 1st part is enough, we can't guarantee
that some use having already upgraded haven't some bad boundaries already
(let's clarify when I say "bad" that it's really just an small inefficiency so
not really a big deal) so we shouldn't break on those. Still, no point in
creating such useless boundaries, hence the 1st part.
The trunk patch really only include the {{DataResolver}} change since legacy
code has been removed there.
> Legacy deserializer can create unexpected boundary range tombstones
> -------------------------------------------------------------------
>
> Key: CASSANDRA-13237
> URL: https://issues.apache.org/jira/browse/CASSANDRA-13237
> Project: Cassandra
> Issue Type: Bug
> Reporter: Sylvain Lebresne
> Assignee: Sylvain Lebresne
> Fix For: 3.0.x, 3.11.x
>
>
> Most of the code don't generate a range tombstone boundary with the same
> deletion time on both side as this is basically useless, and there is some
> assertion in {{DataResolver}} that actually expect this. However, the
> deserializer for legacy sstable doesn't always properly avoid their creation
> and we can thus generate them (and break the {{DataResolver}} assertion.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)