[ 
https://issues.apache.org/jira/browse/CASSANDRA-3084?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13093042#comment-13093042
 ] 

Stu Hood edited comment on CASSANDRA-3084 at 8/29/11 6:16 PM:
--------------------------------------------------------------

Couldn't a bunch of difference cases be eliminated by taking advantage of the 
intersection implementation? The difference between ranges x and y would be {{z 
= x.intersect\(y\); y.subtract(z)}}, and I think a subtract method with a "y 
must contain z" precondition would be much easier to implement.

      was (Author: stuhood):
    Couldn't a bunch of difference cases be eliminated by taking advantage of 
the intersection implementation? The difference between ranges x and y would be 
{{z = x.intersect(y); y.subtract(z)}}, and I think a subtract method with a "y 
must contain z" precondition would be much easier to implement.
  
> o.a.c.dht.Range.differenceToFetch() doesn't handle all cases correctly
> ----------------------------------------------------------------------
>
>                 Key: CASSANDRA-3084
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-3084
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.8.4
>            Reporter: Tyler Hobbs
>            Assignee: Tyler Hobbs
>         Attachments: 3084-unit-test.txt, 3084.txt
>
>
> It's possible that differenceToFetch is making implicit assumptions about the 
> relationship between the two ranges, but the following cases are not handled 
> correctly (the old range is (A, B], the new is (C, D]:
> {noformat}
> --C--A-----B--D--
> {noformat}
> Here, the result will be (C, A] and (D, B], instead of (C, A] and (B, D].
> {noformat}
> --C--A-----D--B--
> {noformat}
> The result will be (C, D] instead of just (C, A].
> {noformat}
> --A--C-----D--B--
> {noformat}
> The result will be (B, D] when nothing needs to be transfered.
> If there is some kind of implicit assumption that these cases won't arise, it 
> either needs to be explicit (assertions, exceptions) or the cases need to be 
> handled.  It should be easy to cover this with unit tests.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to