Author: jbellis
Date: Fri Dec 11 03:58:46 2009
New Revision: 889497

URL: http://svn.apache.org/viewvc?rev=889497&view=rev
Log:
replace IPartitioner.getDecoratedKeyComparator with DK.compareTo, fixing NPE 
that was fixed in the latter but not the former.  patch by jbellis; reviewed by 
Stu Hood and tested by Dan Di Spaltro

Modified:
    incubator/cassandra/branches/cassandra-0.5/CHANGES.txt
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/BinaryMemtable.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/DecoratedKey.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/Memtable.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/CollatingOrderPreservingPartitioner.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/IPartitioner.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/OrderPreservingPartitioner.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/RandomPartitioner.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/IteratingRow.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTable.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTableReader.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTableWriter.java
    
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/service/StorageProxy.java

Modified: incubator/cassandra/branches/cassandra-0.5/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/CHANGES.txt?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.5/CHANGES.txt (original)
+++ incubator/cassandra/branches/cassandra-0.5/CHANGES.txt Fri Dec 11 03:58:46 
2009
@@ -1,4 +1,8 @@
-0.5.0 dev
+0.5.0 RC1
+ * Fix potential NPE in get_range_slice (CASSANDRA-623)
+
+
+0.5.0 beta 2
  * Bootstrap improvements (several tickets)
  * add nodeprobe repair anti-entropy feature (CASSANDRA-193, CASSANDRA-520)
  * fix possibility of partition when many nodes restart at once
@@ -20,6 +24,7 @@
    incorrectly (and temporarily) marked as down (CASSANDRA-610)
  * respect memtable thresholds during log replay (CASSANDRA-609)
  * support ConsistencyLevel.ALL on read (CASSANDRA-584)
+ * add nodeprobe removetoken command (CASSANDRA-564)
 
 
 0.5.0 beta

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/BinaryMemtable.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/BinaryMemtable.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/BinaryMemtable.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/BinaryMemtable.java
 Fri Dec 11 03:58:46 2009
@@ -132,7 +132,7 @@
         assert !columnFamilies_.isEmpty();
         logger_.info("Sorting " + this);
         List<DecoratedKey> keys = new 
ArrayList<DecoratedKey>(columnFamilies_.keySet());
-        Collections.sort(keys, partitioner_.getDecoratedKeyComparator());
+        Collections.sort(keys);
         return keys;
     }
 

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
 Fri Dec 11 03:58:46 2009
@@ -1264,8 +1264,6 @@
     {
         final DecoratedKey startWithDK = partitioner.decorateKey(startWith);
         final DecoratedKey stopAtDK = partitioner.decorateKey(stopAt);
-        // (OPP key decoration is a no-op so using the "decorated" comparator 
against raw keys is fine)
-        final Comparator<DecoratedKey> comparator = 
partitioner.getDecoratedKeyComparator();
 
         // create a CollatedIterator that will return unique keys from 
different sources
         // (current memtable, historical memtables, and SSTables) in the 
correct order.
@@ -1277,8 +1275,8 @@
         {
             public boolean apply(DecoratedKey key)
             {
-                return comparator.compare(startWithDK, key) <= 0
-                       && (stopAt.isEmpty() || comparator.compare(key, 
stopAtDK) <= 0);
+                return startWithDK.compareTo(key) <= 0
+                       && (stopAt.isEmpty() || key.compareTo(stopAtDK) <= 0);
             }
         };
 
@@ -1318,7 +1316,7 @@
             iterators.add(iter);
         }
 
-        Iterator<DecoratedKey> collated = 
IteratorUtils.collatedIterator(comparator, iterators);
+        Iterator<DecoratedKey> collated = 
IteratorUtils.collatedIterator(DecoratedKey.comparator, iterators);
         Iterable<DecoratedKey> reduced = new ReducingIterator<DecoratedKey, 
DecoratedKey>(collated) {
             DecoratedKey current;
 
@@ -1341,7 +1339,7 @@
             boolean rangeCompletedLocally = false;
             for (DecoratedKey current : reduced)
             {
-                if (!stopAt.isEmpty() && comparator.compare(stopAtDK, current) 
< 0)
+                if (!stopAt.isEmpty() && stopAtDK.compareTo(current) < 0)
                 {
                     rangeCompletedLocally = true;
                     break;
@@ -1386,9 +1384,6 @@
     public RangeReply getKeyRangeRaw(final DecoratedKey startWith, final 
DecoratedKey stopAt, int maxResults)
     throws IOException, ExecutionException, InterruptedException
     {
-        // (OPP key decoration is a no-op so using the "decorated" comparator 
against raw keys is fine)
-        final Comparator<DecoratedKey> comparator = 
partitioner.getDecoratedKeyComparator();
-
         // create a CollatedIterator that will return unique keys from 
different sources
         // (current memtable, historical memtables, and SSTables) in the 
correct order.
         List<Iterator<DecoratedKey>> iterators = new 
ArrayList<Iterator<DecoratedKey>>();
@@ -1399,8 +1394,8 @@
         {
             public boolean apply(DecoratedKey key)
             {
-                return comparator.compare(startWith, key) <= 0
-                       && (stopAt.isEmpty() || comparator.compare(key,  
stopAt) <= 0);
+                return startWith.compareTo(key) <= 0
+                       && (stopAt.isEmpty() || key.compareTo(stopAt) <= 0);
             }
         };
 
@@ -1440,7 +1435,7 @@
             iterators.add(iter);
         }
 
-        Iterator<DecoratedKey> collated = 
IteratorUtils.collatedIterator(comparator, iterators);
+        Iterator<DecoratedKey> collated = 
IteratorUtils.collatedIterator(DecoratedKey.comparator, iterators);
         Iterable<DecoratedKey> reduced = new ReducingIterator<DecoratedKey, 
DecoratedKey>(collated) {
             DecoratedKey current;
 
@@ -1462,7 +1457,7 @@
             boolean rangeCompletedLocally = false;
             for (DecoratedKey current : reduced)
             {
-                if (!stopAt.isEmpty() && comparator.compare( stopAt, current) 
< 0)
+                if (!stopAt.isEmpty() && stopAt.compareTo(current) < 0)
                 {
                     rangeCompletedLocally = true;
                     break;

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/DecoratedKey.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/DecoratedKey.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/DecoratedKey.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/DecoratedKey.java
 Fri Dec 11 03:58:46 2009
@@ -21,6 +21,7 @@
 import java.io.DataOutput;
 import java.io.IOException;
 import java.io.DataInput;
+import java.util.Comparator;
 
 import org.apache.cassandra.dht.Token;
 import org.apache.cassandra.io.ICompactSerializer2;
@@ -44,6 +45,14 @@
         return serializer;
     }
 
+    public static final Comparator<DecoratedKey> comparator = new 
Comparator<DecoratedKey>()
+    {
+        public int compare(DecoratedKey o1, DecoratedKey o2)
+        {
+            return o1.compareTo(o2);
+        }
+    };
+
     public final T token;
     public final String key;
 

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/Memtable.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/Memtable.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/Memtable.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/Memtable.java
 Fri Dec 11 03:58:46 2009
@@ -182,9 +182,8 @@
     {
         logger_.info("Sorting " + this);
         // sort keys in the order they would be in when decorated
-        Comparator<DecoratedKey> dc = partitioner_.getDecoratedKeyComparator();
         ArrayList<DecoratedKey> orderedKeys = new 
ArrayList<DecoratedKey>(columnFamilies_.keySet());
-        Collections.sort(orderedKeys, dc);
+        Collections.sort(orderedKeys);
         return orderedKeys;
     }
 
@@ -225,7 +224,7 @@
             // cannot create a PQ of size zero (wtf?)
             return Arrays.asList(new DecoratedKey[0]).iterator();
         }
-        PriorityQueue<DecoratedKey> pq = new 
PriorityQueue<DecoratedKey>(columnFamilies_.size(), 
partitioner_.getDecoratedKeyComparator());
+        PriorityQueue<DecoratedKey> pq = new 
PriorityQueue<DecoratedKey>(columnFamilies_.size());
         pq.addAll(columnFamilies_.keySet());
         return new DestructivePQIterator<DecoratedKey>(pq);
     }

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/CollatingOrderPreservingPartitioner.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/CollatingOrderPreservingPartitioner.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/CollatingOrderPreservingPartitioner.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/CollatingOrderPreservingPartitioner.java
 Fri Dec 11 03:58:46 2009
@@ -37,16 +37,6 @@
     
     public static final BigInteger BYTE_MASK = new BigInteger("255");
 
-    /**
-     * Comparators for decorated keys.
-     */
-    private static final Comparator<DecoratedKey<BytesToken>> comparator = new 
Comparator<DecoratedKey<BytesToken>>() {
-        public int compare(DecoratedKey<BytesToken> o1, 
DecoratedKey<BytesToken> o2)
-        {
-            return FBUtilities.compareByteArrays(o1.token.token, 
o2.token.token);
-        }
-    };
-
     public DecoratedKey<BytesToken> decorateKey(String key)
     {
         return new DecoratedKey<BytesToken>(getToken(key), key);
@@ -62,11 +52,6 @@
         return key.key;
     }
 
-    public Comparator<DecoratedKey<BytesToken>> getDecoratedKeyComparator()
-    {
-        return comparator;
-    }
-
     public BytesToken midpoint(BytesToken ltoken, BytesToken rtoken)
     {
         int sigbytes = Math.max(ltoken.token.length, rtoken.token.length);

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/IPartitioner.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/IPartitioner.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/IPartitioner.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/IPartitioner.java
 Fri Dec 11 03:58:46 2009
@@ -49,11 +49,6 @@
     public DecoratedKey<T> decorateKey(String key);
 
     /**
-     * @return a comparator for decorated key objects, not strings
-     */
-    public Comparator<DecoratedKey<T>> getDecoratedKeyComparator();
-
-    /**
      * Calculate a Token representing the approximate "middle" of the given
      * range.
      *

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/OrderPreservingPartitioner.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/OrderPreservingPartitioner.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/OrderPreservingPartitioner.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/OrderPreservingPartitioner.java
 Fri Dec 11 03:58:46 2009
@@ -35,17 +35,6 @@
 
     public static final BigInteger CHAR_MASK = new BigInteger("65535");
 
-    /**
-     * Comparators for decorated keys.
-     */
-    private static final Comparator<DecoratedKey<StringToken>> comparator =
-        new Comparator<DecoratedKey<StringToken>>() {
-        public int compare(DecoratedKey<StringToken> o1, 
DecoratedKey<StringToken> o2)
-        {
-            return o1.key.compareTo(o2.key);
-        }
-    };
-
     public DecoratedKey<StringToken> decorateKey(String key)
     {
         return new DecoratedKey<StringToken>(new StringToken(key), key);
@@ -61,11 +50,6 @@
         return key.key;
     }
 
-    public Comparator<DecoratedKey<StringToken>> getDecoratedKeyComparator()
-    {
-        return comparator;
-    }
-
     public StringToken midpoint(StringToken ltoken, StringToken rtoken)
     {
         int sigchars = Math.max(ltoken.token.length(), rtoken.token.length());

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/RandomPartitioner.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/RandomPartitioner.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/RandomPartitioner.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/dht/RandomPartitioner.java
 Fri Dec 11 03:58:46 2009
@@ -38,21 +38,6 @@
     public static final BigIntegerToken MINIMUM = new BigIntegerToken("0");
 
     private static final String DELIMITER = ":";
-    
-    private static final Comparator<DecoratedKey<BigIntegerToken>> comparator =
-        new Comparator<DecoratedKey<BigIntegerToken>>() {
-        public int compare(DecoratedKey<BigIntegerToken> o1, 
DecoratedKey<BigIntegerToken> o2)
-        {
-            // first, compare on the bigint hash "decoration".  usually this 
will be enough.
-            int v = o1.token.compareTo(o2.token);
-            if (v != 0) {
-                return v;
-            }
-
-            // if the hashes are equal, compare the strings
-            return o1.key.compareTo(o2.key);
-        }
-    };
 
     public DecoratedKey<BigIntegerToken> decorateKey(String key)
     {
@@ -73,11 +58,6 @@
         return key.token + DELIMITER + key.key;
     }
 
-    public Comparator<DecoratedKey<BigIntegerToken>> 
getDecoratedKeyComparator()
-    {
-        return comparator;
-    }
-
     public BigIntegerToken midpoint(BigIntegerToken ltoken, BigIntegerToken 
rtoken)
     {
         Pair<BigInteger,Boolean> midpair = FBUtilities.midpoint(ltoken.token, 
rtoken.token, 127);

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/IteratingRow.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/IteratingRow.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/IteratingRow.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/IteratingRow.java
 Fri Dec 11 03:58:46 2009
@@ -109,6 +109,6 @@
 
     public int compareTo(IteratingRow o)
     {
-        return partitioner.getDecoratedKeyComparator().compare(key, o.key);
+        return key.compareTo(o.key);
     }
 }

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTable.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTable.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTable.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTable.java
 Fri Dec 11 03:58:46 2009
@@ -179,7 +179,7 @@
 
         public int compareTo(KeyPosition kp)
         {
-            return partitioner.getDecoratedKeyComparator().compare(key, 
kp.key);
+            return key.compareTo(kp.key);
         }
 
         public String toString()

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTableReader.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTableReader.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTableReader.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTableReader.java
 Fri Dec 11 03:58:46 2009
@@ -310,7 +310,7 @@
                     return -1;
                 }
                 long position = input.readLong();
-                int v = 
partitioner.getDecoratedKeyComparator().compare(indexDecoratedKey, 
decoratedKey);
+                int v = indexDecoratedKey.compareTo(decoratedKey);
                 if (v == 0)
                 {
                     if (keyCache != null)
@@ -352,7 +352,7 @@
                     return -1;
                 }
                 long position = input.readLong();
-                int v = 
partitioner.getDecoratedKeyComparator().compare(indexDecoratedKey, 
decoratedKey);
+                int v = indexDecoratedKey.compareTo(decoratedKey);
                 if (v >= 0)
                     return position;
             }

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTableWriter.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTableWriter.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTableWriter.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/io/SSTableWriter.java
 Fri Dec 11 03:58:46 2009
@@ -61,8 +61,7 @@
         {
             throw new IOException("Keys must not be null.");
         }
-        Comparator<DecoratedKey> c = partitioner.getDecoratedKeyComparator();
-        if (lastWrittenKey != null && c.compare(lastWrittenKey, decoratedKey) 
> 0)
+        if (lastWrittenKey != null && lastWrittenKey.compareTo(decoratedKey) > 
0)
         {
             logger.info("Last written key : " + lastWrittenKey);
             logger.info("Current key : " + decoratedKey);

Modified: 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/service/StorageProxy.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/service/StorageProxy.java?rev=889497&r1=889496&r2=889497&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/service/StorageProxy.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/service/StorageProxy.java
 Fri Dec 11 03:58:46 2009
@@ -78,7 +78,7 @@
         public int compare(String o1, String o2)
         {
             IPartitioner p = StorageService.getPartitioner();
-            return p.getDecoratedKeyComparator().compare(p.decorateKey(o1), 
p.decorateKey(o2));
+            return p.decorateKey(o1).compareTo(p.decorateKey(o2));
         }
     };
 


Reply via email to