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", ""));
     }


Reply via email to