cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benedict (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-7403) Reconciliation doesn't consider fields specific to expiring cells
Date Mon, 07 Jul 2014 13:30:34 GMT


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

> Reconciliation doesn't consider fields specific to expiring cells 
> ------------------------------------------------------------------
>                 Key: CASSANDRA-7403
>                 URL:
>             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

View raw message