[jira] [Updated] (CASSANDRA-3084) o.a.c.dht.Range.differenceToFetch() doesn't handle all cases correctly

2011-08-29 Thread Tyler Hobbs (JIRA)

 [ 
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




[jira] [Updated] (CASSANDRA-3084) o.a.c.dht.Range.differenceToFetch() doesn't handle all cases correctly

2011-08-29 Thread Stu Hood (JIRA)

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

Stu Hood updated CASSANDRA-3084:


Reviewer: stuhood

 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




[jira] [Updated] (CASSANDRA-3084) o.a.c.dht.Range.differenceToFetch() doesn't handle all cases correctly

2011-08-29 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs updated CASSANDRA-3084:
---

Attachment: 3084-v2.txt

Good idea!

3084-v2.txt simplifies the logic by adding a subtractContained() method.

 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-v2.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