[
https://issues.apache.org/jira/browse/CASSANDRA-7403?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14053646#comment-14053646
]
Benedict commented on CASSANDRA-7403:
-------------------------------------
I don't feel strongly about it tbh, however value comparison for reconciliation
is basically a last resort and I think using TTLs here is better because:
1) value reconciliation does not apply uniformly for a single update, so we
could end up with a mix of both TTLs and values from different writes, where we
might have a chance to uniformly select with TTLs
2) There is some indication the data itself takes greater precedence if you
want to keep it longer
> Reconciliation doesn't consider fields specific to expiring cells
> ------------------------------------------------------------------
>
> Key: CASSANDRA-7403
> URL: https://issues.apache.org/jira/browse/CASSANDRA-7403
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Reporter: Sam Tunnicliffe
> Assignee: Benedict
> Fix For: 2.1.0
>
>
> Reconciling 2 ExpiringColumns which are equal in every way except for the
> localExpirationTime field will always favour the instance on which reconcile
> is called as fields specific to expiration are not considered.
> This is actually beneficial in pre-2.1 versions as in
> AtomicSortedColumns.Holder.addColumn we call reconcile on the new column,
> which 'wins' the reconcilliation and so the localExpirationTime is
> effectively extended.
> From 2.1 onwards, reconcile is actually called on the existing value (in
> BTreeSortedColumns.ColumnUpdater) and so it wins the reconcilliation and the
> ttl doesn't get extended. The same thing happens in the iterator returned
> from MergeIterator.Reducer.getReducer() so we see the same behaviour when
> merging cells from the multiple SSTables and/or memtables.
--
This message was sent by Atlassian JIRA
(v6.2#6252)