[ https://issues.apache.org/jira/browse/CASSANDRA-3084?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tyler Hobbs updated CASSANDRA-3084: ----------------------------------- Attachment: 3084.txt 3084-unit-test.txt 3084.txt covers all cases of possible range differences. 3084-unit-test.txt provides unit tests that fail before the patch. The logic is definitely a bit hairy here, so any thoughts on how to simplify it are welcome. > 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 > 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