Author: jbellis
Date: Thu Dec 2 01:14:35 2010
New Revision: 1041242
URL: http://svn.apache.org/viewvc?rev=1041242&view=rev
Log:
fix range queries against wrapped range
patch by Stu Hood; reviewed by jbellis for CASSANDRA-1781
Modified:
cassandra/branches/cassandra-0.6/CHANGES.txt
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/dht/AbstractBounds.java
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/StorageProxy.java
cassandra/branches/cassandra-0.6/test/unit/org/apache/cassandra/service/StorageProxyTest.java
Modified: cassandra/branches/cassandra-0.6/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/CHANGES.txt?rev=1041242&r1=1041241&r2=1041242&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.6/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.6/CHANGES.txt Thu Dec 2 01:14:35 2010
@@ -11,6 +11,7 @@
* fix live-column-count of slice ranges including tombstoned supercolumn
with live subcolumn (CASSANDRA-1591)
* clean up log messages for gossip token notifications (CASSANDRA-1518)
+ * fix range queries against wrapped range (CASSANDRA-1781)
0.6.8
Modified:
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/dht/AbstractBounds.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/dht/AbstractBounds.java?rev=1041242&r1=1041241&r2=1041242&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/dht/AbstractBounds.java
(original)
+++
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/dht/AbstractBounds.java
Thu Dec 2 01:14:35 2010
@@ -65,7 +65,7 @@ public abstract class AbstractBounds imp
*/
public Pair<AbstractBounds,AbstractBounds> split(Token token)
{
- assert contains(token);
+ assert left.equals(token) || contains(token);
AbstractBounds lb = createFrom(token);
// we contain this token, so only one of the left or right can be empty
AbstractBounds rb = lb != null && token.equals(right) ? null : new
Range(token, right);
Modified:
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/StorageProxy.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/StorageProxy.java?rev=1041242&r1=1041241&r2=1041242&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/StorageProxy.java
(original)
+++
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/StorageProxy.java
Thu Dec 2 01:14:35 2010
@@ -619,7 +619,7 @@ public class StorageProxy implements Sto
while (ringIter.hasNext())
{
Token token = ringIter.next();
- if (remainder == null || !remainder.contains(token))
+ if (remainder == null || !(remainder.left.equals(token) ||
remainder.contains(token)))
// no more splits
break;
Pair<AbstractBounds,AbstractBounds> splits =
remainder.split(token);
Modified:
cassandra/branches/cassandra-0.6/test/unit/org/apache/cassandra/service/StorageProxyTest.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/test/unit/org/apache/cassandra/service/StorageProxyTest.java?rev=1041242&r1=1041241&r2=1041242&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.6/test/unit/org/apache/cassandra/service/StorageProxyTest.java
(original)
+++
cassandra/branches/cassandra-0.6/test/unit/org/apache/cassandra/service/StorageProxyTest.java
Thu Dec 2 01:14:35 2010
@@ -95,8 +95,9 @@ public class StorageProxyTest extends Cl
// full wraps
testGRR(range("0", "0"), range("0", "1"), range("1", "6"), range("6",
""), range("", "0"));
testGRR(range("", ""), range("", "1"), range("1", "6"), range("6",
""));
- // wrap on member token
+ // wrap on member tokens
testGRR(range("6", "6"), range("6", ""), range("", "1"), range("1",
"6"));
+ testGRR(range("6", "1"), range("6", ""), range("", "1"));
// end wrapped
testGRR(range("5", ""), range("5", "6"), range("6", ""));
}