mirror of https://github.com/apache/cassandra
fix off-by-one error in Range.contains(Token): the endpoint (right) of the range is always supposed to be exclusive, but it was inclusive in the non-wrapping case. patch by Stu Hood; reviewed by jbellis for CASSANDRA-236
git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@785697 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a102a3e73a
commit
c1545f5214
|
|
@ -31,6 +31,9 @@ import org.apache.cassandra.service.StorageService;
|
|||
|
||||
/**
|
||||
* A representation of the range that a node is responsible for on the DHT ring.
|
||||
*
|
||||
* A Range is responsible for the tokens between [left, right).
|
||||
*
|
||||
* Author : Avinash Lakshman ( alakshman@facebook.com) & Prashant Malik ( pmalik@facebook.com )
|
||||
*/
|
||||
|
||||
|
|
@ -46,7 +49,7 @@ public class Range implements Comparable<Range>, Serializable
|
|||
{
|
||||
return serializer_;
|
||||
}
|
||||
|
||||
|
||||
private final Token left_;
|
||||
private final Token right_;
|
||||
|
||||
|
|
@ -101,7 +104,7 @@ public class Range implements Comparable<Range>, Serializable
|
|||
/*
|
||||
* This is the range [a, b) where a < b.
|
||||
*/
|
||||
return ( bi.compareTo(left_) >= 0 && right_.compareTo(bi) >=0 );
|
||||
return ( bi.compareTo(left_) >= 0 && right_.compareTo(bi) > 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -24,13 +24,17 @@ public class RangeTest {
|
|||
@Test
|
||||
public void testRange() {
|
||||
Range left = new Range(new BigIntegerToken("0"), new BigIntegerToken("100"));
|
||||
assert left.contains(new BigIntegerToken("0"));
|
||||
assert left.contains(new BigIntegerToken("10"));
|
||||
assert !left.contains(new BigIntegerToken("-1"));
|
||||
assert !left.contains(new BigIntegerToken("100"));
|
||||
assert !left.contains(new BigIntegerToken("101"));
|
||||
|
||||
Range right = new Range(new BigIntegerToken("100"), new BigIntegerToken("0"));
|
||||
assert right.contains(new BigIntegerToken("100"));
|
||||
assert right.contains(new BigIntegerToken("200"));
|
||||
assert right.contains(new BigIntegerToken("-10"));
|
||||
assert !right.contains(new BigIntegerToken("0"));
|
||||
assert !right.contains(new BigIntegerToken("1"));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue