[ 
https://issues.apache.org/jira/browse/CASSANDRA-3872?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sylvain Lebresne updated CASSANDRA-3872:
----------------------------------------

    Attachment: 3872.patch

Attaching patch for this. The idea is to make containers use MAX_VALUE instead 
of MIN_VALUE  for localDeleteionTime. There is however two things to consider:
# for containers, we do serialize the localDeletionTime, so we have to be 
careful for upgrade (mixed version cluster). What the patch does is to 
recognize when someone provided MIN_VALUE and transforming to MAX_VALUE. This 
only work when old node send use MIN_VALUE, however *I think* it is actually OK 
to send MAX_VALUE to old node (pre-1.1 code uses markedForDeleteAt to decide if 
a container is deleted, not localDeletionTime, so we shouldn't break anything).
# CFS.removeDeleted has to be able to distinguish between an empty container 
that is marked for deletion (but not gcable) and one that is not marked for 
deletion. In the former, we should keep the container, not in the latter. This 
means that this patch actually reintroduce the use of isMarkedForDelete() for 
containers in CFS.removeDeleted (for containers, isMarkedForDelete is not 
timing dependent).

Note that there would likely be other ways to fix this issue (reverting 
CASSANDRA-3716 would be one).

In any case, the patch fixes the two unit tests.
                
> Sub-columns removal is broken in 1.1
> ------------------------------------
>
>                 Key: CASSANDRA-3872
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-3872
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 1.1
>            Reporter: Sylvain Lebresne
>            Assignee: Sylvain Lebresne
>             Fix For: 1.1
>
>         Attachments: 3872.patch
>
>
> CASSANDRA-3716 actually broke sub-columns deletion. The reason is that in 
> QueryFilter.isRelevant, we've switched in checking getLocalDeletionTime() 
> only (without looking for isMarkedForDelete). But for columns containers (in 
> this case SuperColumn), the default local deletion time when not deleted is 
> Integer.MIN_VALUE. In other words, a SC with only non-gcable tombstones will 
> be considered as not relevant (while it should).
> This is caught by two unit tests (RemoveSuperColumnTest and 
> RemoveSubColumnTest) that are failing currently.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to