You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ja...@apache.org on 2016/02/26 23:51:55 UTC
[1/6] cassandra git commit: Range.compareTo() violates the contract
of Comparable
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.2 941d13dac -> ecbeb0841
refs/heads/cassandra-3.0 9961b6991 -> d7cb6f61a
refs/heads/trunk e1a14f502 -> 11d7eb3ba
Range.compareTo() violates the contract of Comparable
patch by jasobrown and blambov for CASSANDRA-11216
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ecbeb084
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ecbeb084
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ecbeb084
Branch: refs/heads/cassandra-2.2
Commit: ecbeb0841e8627fa74a34346e0c380061588366a
Parents: 941d13d
Author: Jason Brown <ja...@gmail.com>
Authored: Fri Feb 26 11:53:03 2016 -0800
Committer: Jason Brown <ja...@gmail.com>
Committed: Fri Feb 26 14:47:57 2016 -0800
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/dht/Range.java | 20 +++++++++++---------
.../org/apache/cassandra/dht/RangeTest.java | 15 +++++++++++++++
3 files changed, 27 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ecbeb084/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9162165..aa3adf5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.2.6
+ * Range.compareTo() violates the contract of Comparable (CASSANDRA-11216)
* Avoid NPE when serializing ErrorMessage with null message (CASSANDRA-11167)
* Replacing an aggregate with a new version doesn't reset INITCOND (CASSANDRA-10840)
* (cqlsh) cqlsh cannot be called through symlink (CASSANDRA-11037)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ecbeb084/src/java/org/apache/cassandra/dht/Range.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/dht/Range.java b/src/java/org/apache/cassandra/dht/Range.java
index f2c5996..34e91ea 100644
--- a/src/java/org/apache/cassandra/dht/Range.java
+++ b/src/java/org/apache/cassandra/dht/Range.java
@@ -32,6 +32,8 @@ import org.apache.cassandra.utils.Pair;
* A Range is responsible for the tokens between (left, right].
*
* Used by the partitioner and by map/reduce by-token range scans.
+ *
+ * Note: this class has a natural ordering that is inconsistent with equals
*/
public class Range<T extends RingPosition<T>> extends AbstractBounds<T> implements Comparable<Range<T>>, Serializable
{
@@ -254,18 +256,18 @@ public class Range<T extends RingPosition<T>> extends AbstractBounds<T> implemen
return left.compareTo(right) >= 0;
}
+ /**
+ * Note: this class has a natural ordering that is inconsistent with equals
+ */
public int compareTo(Range<T> rhs)
{
- /*
- * If the range represented by the "this" pointer
- * is a wrap around then it is the smaller one.
- */
- if ( isWrapAround(left, right) )
- return -1;
-
- if ( isWrapAround(rhs.left, rhs.right) )
- return 1;
+ boolean lhsWrap = isWrapAround(left, right);
+ boolean rhsWrap = isWrapAround(rhs.left, rhs.right);
+ // if one of the two wraps, that's the smaller one.
+ if (lhsWrap != rhsWrap)
+ return Boolean.compare(!lhsWrap, !rhsWrap);
+ // otherwise compare by right.
return right.compareTo(rhs.right);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ecbeb084/test/unit/org/apache/cassandra/dht/RangeTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/dht/RangeTest.java b/test/unit/org/apache/cassandra/dht/RangeTest.java
index 4255487..9fb49cf 100644
--- a/test/unit/org/apache/cassandra/dht/RangeTest.java
+++ b/test/unit/org/apache/cassandra/dht/RangeTest.java
@@ -661,4 +661,19 @@ public class RangeTest
{
return new Murmur3Partitioner.LongToken(t);
}
+
+ @Test
+ public void testCompareTo_SameObject_WrapAround()
+ {
+ Range<Token> range = r(10, -10);
+ assertEquals(0, range.compareTo(range));
+ }
+
+ @Test
+ public void testCompareTo_BothWrapAround()
+ {
+ Range<Token> r0 = r(10, -10);
+ Range<Token> r1 = r(20, -5);
+ assertNotSame(r0.compareTo(r1), r1.compareTo(r0));
+ }
}
[2/6] cassandra git commit: Range.compareTo() violates the contract
of Comparable
Posted by ja...@apache.org.
Range.compareTo() violates the contract of Comparable
patch by jasobrown and blambov for CASSANDRA-11216
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ecbeb084
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ecbeb084
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ecbeb084
Branch: refs/heads/cassandra-3.0
Commit: ecbeb0841e8627fa74a34346e0c380061588366a
Parents: 941d13d
Author: Jason Brown <ja...@gmail.com>
Authored: Fri Feb 26 11:53:03 2016 -0800
Committer: Jason Brown <ja...@gmail.com>
Committed: Fri Feb 26 14:47:57 2016 -0800
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/dht/Range.java | 20 +++++++++++---------
.../org/apache/cassandra/dht/RangeTest.java | 15 +++++++++++++++
3 files changed, 27 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ecbeb084/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9162165..aa3adf5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.2.6
+ * Range.compareTo() violates the contract of Comparable (CASSANDRA-11216)
* Avoid NPE when serializing ErrorMessage with null message (CASSANDRA-11167)
* Replacing an aggregate with a new version doesn't reset INITCOND (CASSANDRA-10840)
* (cqlsh) cqlsh cannot be called through symlink (CASSANDRA-11037)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ecbeb084/src/java/org/apache/cassandra/dht/Range.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/dht/Range.java b/src/java/org/apache/cassandra/dht/Range.java
index f2c5996..34e91ea 100644
--- a/src/java/org/apache/cassandra/dht/Range.java
+++ b/src/java/org/apache/cassandra/dht/Range.java
@@ -32,6 +32,8 @@ import org.apache.cassandra.utils.Pair;
* A Range is responsible for the tokens between (left, right].
*
* Used by the partitioner and by map/reduce by-token range scans.
+ *
+ * Note: this class has a natural ordering that is inconsistent with equals
*/
public class Range<T extends RingPosition<T>> extends AbstractBounds<T> implements Comparable<Range<T>>, Serializable
{
@@ -254,18 +256,18 @@ public class Range<T extends RingPosition<T>> extends AbstractBounds<T> implemen
return left.compareTo(right) >= 0;
}
+ /**
+ * Note: this class has a natural ordering that is inconsistent with equals
+ */
public int compareTo(Range<T> rhs)
{
- /*
- * If the range represented by the "this" pointer
- * is a wrap around then it is the smaller one.
- */
- if ( isWrapAround(left, right) )
- return -1;
-
- if ( isWrapAround(rhs.left, rhs.right) )
- return 1;
+ boolean lhsWrap = isWrapAround(left, right);
+ boolean rhsWrap = isWrapAround(rhs.left, rhs.right);
+ // if one of the two wraps, that's the smaller one.
+ if (lhsWrap != rhsWrap)
+ return Boolean.compare(!lhsWrap, !rhsWrap);
+ // otherwise compare by right.
return right.compareTo(rhs.right);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ecbeb084/test/unit/org/apache/cassandra/dht/RangeTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/dht/RangeTest.java b/test/unit/org/apache/cassandra/dht/RangeTest.java
index 4255487..9fb49cf 100644
--- a/test/unit/org/apache/cassandra/dht/RangeTest.java
+++ b/test/unit/org/apache/cassandra/dht/RangeTest.java
@@ -661,4 +661,19 @@ public class RangeTest
{
return new Murmur3Partitioner.LongToken(t);
}
+
+ @Test
+ public void testCompareTo_SameObject_WrapAround()
+ {
+ Range<Token> range = r(10, -10);
+ assertEquals(0, range.compareTo(range));
+ }
+
+ @Test
+ public void testCompareTo_BothWrapAround()
+ {
+ Range<Token> r0 = r(10, -10);
+ Range<Token> r1 = r(20, -5);
+ assertNotSame(r0.compareTo(r1), r1.compareTo(r0));
+ }
}
[3/6] cassandra git commit: Range.compareTo() violates the contract
of Comparable
Posted by ja...@apache.org.
Range.compareTo() violates the contract of Comparable
patch by jasobrown and blambov for CASSANDRA-11216
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ecbeb084
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ecbeb084
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ecbeb084
Branch: refs/heads/trunk
Commit: ecbeb0841e8627fa74a34346e0c380061588366a
Parents: 941d13d
Author: Jason Brown <ja...@gmail.com>
Authored: Fri Feb 26 11:53:03 2016 -0800
Committer: Jason Brown <ja...@gmail.com>
Committed: Fri Feb 26 14:47:57 2016 -0800
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/dht/Range.java | 20 +++++++++++---------
.../org/apache/cassandra/dht/RangeTest.java | 15 +++++++++++++++
3 files changed, 27 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ecbeb084/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9162165..aa3adf5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.2.6
+ * Range.compareTo() violates the contract of Comparable (CASSANDRA-11216)
* Avoid NPE when serializing ErrorMessage with null message (CASSANDRA-11167)
* Replacing an aggregate with a new version doesn't reset INITCOND (CASSANDRA-10840)
* (cqlsh) cqlsh cannot be called through symlink (CASSANDRA-11037)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ecbeb084/src/java/org/apache/cassandra/dht/Range.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/dht/Range.java b/src/java/org/apache/cassandra/dht/Range.java
index f2c5996..34e91ea 100644
--- a/src/java/org/apache/cassandra/dht/Range.java
+++ b/src/java/org/apache/cassandra/dht/Range.java
@@ -32,6 +32,8 @@ import org.apache.cassandra.utils.Pair;
* A Range is responsible for the tokens between (left, right].
*
* Used by the partitioner and by map/reduce by-token range scans.
+ *
+ * Note: this class has a natural ordering that is inconsistent with equals
*/
public class Range<T extends RingPosition<T>> extends AbstractBounds<T> implements Comparable<Range<T>>, Serializable
{
@@ -254,18 +256,18 @@ public class Range<T extends RingPosition<T>> extends AbstractBounds<T> implemen
return left.compareTo(right) >= 0;
}
+ /**
+ * Note: this class has a natural ordering that is inconsistent with equals
+ */
public int compareTo(Range<T> rhs)
{
- /*
- * If the range represented by the "this" pointer
- * is a wrap around then it is the smaller one.
- */
- if ( isWrapAround(left, right) )
- return -1;
-
- if ( isWrapAround(rhs.left, rhs.right) )
- return 1;
+ boolean lhsWrap = isWrapAround(left, right);
+ boolean rhsWrap = isWrapAround(rhs.left, rhs.right);
+ // if one of the two wraps, that's the smaller one.
+ if (lhsWrap != rhsWrap)
+ return Boolean.compare(!lhsWrap, !rhsWrap);
+ // otherwise compare by right.
return right.compareTo(rhs.right);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ecbeb084/test/unit/org/apache/cassandra/dht/RangeTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/dht/RangeTest.java b/test/unit/org/apache/cassandra/dht/RangeTest.java
index 4255487..9fb49cf 100644
--- a/test/unit/org/apache/cassandra/dht/RangeTest.java
+++ b/test/unit/org/apache/cassandra/dht/RangeTest.java
@@ -661,4 +661,19 @@ public class RangeTest
{
return new Murmur3Partitioner.LongToken(t);
}
+
+ @Test
+ public void testCompareTo_SameObject_WrapAround()
+ {
+ Range<Token> range = r(10, -10);
+ assertEquals(0, range.compareTo(range));
+ }
+
+ @Test
+ public void testCompareTo_BothWrapAround()
+ {
+ Range<Token> r0 = r(10, -10);
+ Range<Token> r1 = r(20, -5);
+ assertNotSame(r0.compareTo(r1), r1.compareTo(r0));
+ }
}
[4/6] cassandra git commit: Merge branch 'cassandra-2.2' into
cassandra-3.0
Posted by ja...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d7cb6f61
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d7cb6f61
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d7cb6f61
Branch: refs/heads/trunk
Commit: d7cb6f61adec951c082cdeea64ffe5f68b8f7651
Parents: 9961b69 ecbeb08
Author: Jason Brown <ja...@gmail.com>
Authored: Fri Feb 26 14:49:35 2016 -0800
Committer: Jason Brown <ja...@gmail.com>
Committed: Fri Feb 26 14:50:13 2016 -0800
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/dht/Range.java | 20 +++++++++++---------
.../org/apache/cassandra/dht/RangeTest.java | 15 +++++++++++++++
3 files changed, 27 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d7cb6f61/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index fbc1c8a,aa3adf5..2dacd3a
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,24 -1,5 +1,25 @@@
-2.2.6
+3.0.4
+ * MV should only query complex columns included in the view (CASSANDRA-11069)
+ * Failed aggregate creation breaks server permanently (CASSANDRA-11064)
+ * Add sstabledump tool (CASSANDRA-7464)
+ * Introduce backpressure for hints (CASSANDRA-10972)
+ * Fix ClusteringPrefix not being able to read tombstone range boundaries (CASSANDRA-11158)
+ * Prevent logging in sandboxed state (CASSANDRA-11033)
+ * Disallow drop/alter operations of UDTs used by UDAs (CASSANDRA-10721)
+ * Add query time validation method on Index (CASSANDRA-11043)
+ * Avoid potential AssertionError in mixed version cluster (CASSANDRA-11128)
+ * Properly handle hinted handoff after topology changes (CASSANDRA-5902)
+ * AssertionError when listing sstable files on inconsistent disk state (CASSANDRA-11156)
+ * Fix wrong rack counting and invalid conditions check for TokenAllocation
+ (CASSANDRA-11139)
+ * Avoid creating empty hint files (CASSANDRA-11090)
+ * Fix leak detection strong reference loop using weak reference (CASSANDRA-11120)
+ * Configurie BatchlogManager to stop delayed tasks on shutdown (CASSANDRA-11062)
+ * Hadoop integration is incompatible with Cassandra Driver 3.0.0 (CASSANDRA-11001)
+ * Add dropped_columns to the list of schema table so it gets handled
+ properly (CASSANDRA-11050)
+Merged from 2.2:
+ * Range.compareTo() violates the contract of Comparable (CASSANDRA-11216)
* Avoid NPE when serializing ErrorMessage with null message (CASSANDRA-11167)
* Replacing an aggregate with a new version doesn't reset INITCOND (CASSANDRA-10840)
* (cqlsh) cqlsh cannot be called through symlink (CASSANDRA-11037)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d7cb6f61/src/java/org/apache/cassandra/dht/Range.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d7cb6f61/test/unit/org/apache/cassandra/dht/RangeTest.java
----------------------------------------------------------------------
[6/6] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Posted by ja...@apache.org.
Merge branch 'cassandra-3.0' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/11d7eb3b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/11d7eb3b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/11d7eb3b
Branch: refs/heads/trunk
Commit: 11d7eb3ba32e2abe01a14017477846ab884b09f6
Parents: e1a14f5 d7cb6f6
Author: Jason Brown <ja...@gmail.com>
Authored: Fri Feb 26 14:50:32 2016 -0800
Committer: Jason Brown <ja...@gmail.com>
Committed: Fri Feb 26 14:51:33 2016 -0800
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/dht/Range.java | 20 +++++++++++---------
.../org/apache/cassandra/dht/RangeTest.java | 15 +++++++++++++++
3 files changed, 27 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/11d7eb3b/CHANGES.txt
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/11d7eb3b/src/java/org/apache/cassandra/dht/Range.java
----------------------------------------------------------------------
[5/6] cassandra git commit: Merge branch 'cassandra-2.2' into
cassandra-3.0
Posted by ja...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d7cb6f61
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d7cb6f61
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d7cb6f61
Branch: refs/heads/cassandra-3.0
Commit: d7cb6f61adec951c082cdeea64ffe5f68b8f7651
Parents: 9961b69 ecbeb08
Author: Jason Brown <ja...@gmail.com>
Authored: Fri Feb 26 14:49:35 2016 -0800
Committer: Jason Brown <ja...@gmail.com>
Committed: Fri Feb 26 14:50:13 2016 -0800
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/dht/Range.java | 20 +++++++++++---------
.../org/apache/cassandra/dht/RangeTest.java | 15 +++++++++++++++
3 files changed, 27 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d7cb6f61/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index fbc1c8a,aa3adf5..2dacd3a
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,24 -1,5 +1,25 @@@
-2.2.6
+3.0.4
+ * MV should only query complex columns included in the view (CASSANDRA-11069)
+ * Failed aggregate creation breaks server permanently (CASSANDRA-11064)
+ * Add sstabledump tool (CASSANDRA-7464)
+ * Introduce backpressure for hints (CASSANDRA-10972)
+ * Fix ClusteringPrefix not being able to read tombstone range boundaries (CASSANDRA-11158)
+ * Prevent logging in sandboxed state (CASSANDRA-11033)
+ * Disallow drop/alter operations of UDTs used by UDAs (CASSANDRA-10721)
+ * Add query time validation method on Index (CASSANDRA-11043)
+ * Avoid potential AssertionError in mixed version cluster (CASSANDRA-11128)
+ * Properly handle hinted handoff after topology changes (CASSANDRA-5902)
+ * AssertionError when listing sstable files on inconsistent disk state (CASSANDRA-11156)
+ * Fix wrong rack counting and invalid conditions check for TokenAllocation
+ (CASSANDRA-11139)
+ * Avoid creating empty hint files (CASSANDRA-11090)
+ * Fix leak detection strong reference loop using weak reference (CASSANDRA-11120)
+ * Configurie BatchlogManager to stop delayed tasks on shutdown (CASSANDRA-11062)
+ * Hadoop integration is incompatible with Cassandra Driver 3.0.0 (CASSANDRA-11001)
+ * Add dropped_columns to the list of schema table so it gets handled
+ properly (CASSANDRA-11050)
+Merged from 2.2:
+ * Range.compareTo() violates the contract of Comparable (CASSANDRA-11216)
* Avoid NPE when serializing ErrorMessage with null message (CASSANDRA-11167)
* Replacing an aggregate with a new version doesn't reset INITCOND (CASSANDRA-10840)
* (cqlsh) cqlsh cannot be called through symlink (CASSANDRA-11037)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d7cb6f61/src/java/org/apache/cassandra/dht/Range.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d7cb6f61/test/unit/org/apache/cassandra/dht/RangeTest.java
----------------------------------------------------------------------