cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-10261) Materialized Views Timestamp issues
Date Wed, 09 Sep 2015 07:06:46 GMT


Sylvain Lebresne commented on CASSANDRA-10261:

I have to admit that I'm really not a fan of using the {{DeletionTime}} that way. {{DeletionTime}}
is somewhat of a generic class that is used in more than one places. In particular, I believe
we only really care here about row tombstones, but {{DeletionTime}} is also used for range
tombstones, partition tombstones and collection (complex) tombstones. The new flag doesn't
make sense (or at the very least won't be used/properly handled) in those cases, which is
1) confusing code wise and 2) inefficient since that means we're storing an additional byte
every time we serialize a {{DeletionTime}} even though this is a complete waste most often
than not. On that efficiency front, even restricting it to row tombstones, it's also a little
bit sad that every non-MV table will also pay that 1 byte price every time they use a row
tombstones even though they will also never use it. That is, we spent a reasonable amount
of effort for 3.0 to keep the serialization format relatively dense, and "wasting" a full
byte that way feels a bit of a step back.

> Materialized Views Timestamp issues
> -----------------------------------
>                 Key: CASSANDRA-10261
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: T Jake Luciani
>            Assignee: T Jake Luciani
>             Fix For: 3.0.0 rc1
> As [~thobbs] [mentioned|]
in CASSANDRA-9664 there are issues dealing with updates to individual cells which can mask
data from the base table in the view when trying to filter data correctly in the view.  
> Unfortunately, this same issue exists for all MV tables with regular columns.
> In the earlier versions of MV we did have a fix for this which I now can see is ineffective
for all situations.
> I've pushed some unit tests to show the issue (similar to tylers) and a fix.  The idea
is we keep the base table's timestamps per cell as it so we can *always* tell (per replica)
which version of the record is the latest.  Since the base table *always* writes the entire
record to the view (part of our earlier partial fix) we can ensure the view record contains
*at least* views primary key timestamp.  

This message was sent by Atlassian JIRA

View raw message