Author: jbellis
Date: Wed Nov 17 19:45:14 2010
New Revision: 1036178
URL: http://svn.apache.org/viewvc?rev=1036178&view=rev
Log:
merge from 0.6
Modified:
cassandra/branches/cassandra-0.7/ (props changed)
cassandra/branches/cassandra-0.7/CHANGES.txt
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
(props changed)
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
(props changed)
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
(props changed)
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
(props changed)
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
(props changed)
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AntiEntropyService.java
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
Propchange: cassandra/branches/cassandra-0.7/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Nov 17 19:45:14 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6:922689-1035020,1035656
+/cassandra/branches/cassandra-0.6:922689-1036176
/cassandra/branches/cassandra-0.7:1035666
/cassandra/trunk:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3:774578-796573
Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1036178&r1=1036177&r2=1036178&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Wed Nov 17 19:45:14 2010
@@ -2,6 +2,12 @@ dev
* add clustertool, config-converter, sstablekeys, and schematool
Windows .bat files (CASSANDRA-1723)
* reject range queries received during bootstrap (CASSANDRA-1739)
+ * fix wrapping-range queries on non-minimum token (CASSANDRA-1700)
+ * add nodetool cfhistogram (CASSANDRA-1698)
+ * limit repaired ranges to what the nodes have in common (CASSAHDRA-1674)
+
+
+0.6.8
* Update windows .bat files to work outside of main Cassandra
directory (CASSANDRA-1713)
* log threshold causing memtable flush (CASSANDRA-1675)
Propchange:
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Nov 17 19:45:14 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1035020,1035656
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1036176
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1035666
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
Propchange:
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Nov 17 19:45:14 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1035020,1035656
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1036176
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1035666
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
Propchange:
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Nov 17 19:45:14 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1035020,1035656
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1036176
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1035666
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
Propchange:
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Nov 17 19:45:14 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1035020,1035656
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1036176
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1035666
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
Propchange:
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Nov 17 19:45:14 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1035020,1035656
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1036176
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1035666
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AntiEntropyService.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AntiEntropyService.java?rev=1036178&r1=1036177&r2=1036178&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AntiEntropyService.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AntiEntropyService.java
Wed Nov 17 19:45:14 2010
@@ -433,14 +433,14 @@ public class AntiEntropyService
public final TreeRequest request;
public final MerkleTree ltree;
public final MerkleTree rtree;
- public final List<MerkleTree.TreeRange> differences;
+ public final List<Range> differences;
public Differencer(TreeRequest request, MerkleTree ltree, MerkleTree
rtree)
{
this.request = request;
this.ltree = ltree;
this.rtree = rtree;
- differences = new ArrayList<MerkleTree.TreeRange>();
+ differences = new ArrayList<Range>();
}
/**
@@ -461,31 +461,22 @@ public class AntiEntropyService
Set<Range> interesting = new
HashSet(ss.getRangesForEndpoint(request.cf.left, local));
interesting.retainAll(ss.getRangesForEndpoint(request.cf.left,
request.endpoint));
- // compare trees, and filter out uninteresting differences
+ // compare trees, and collect interesting differences
for (MerkleTree.TreeRange diff : MerkleTree.difference(ltree,
rtree))
- {
for (Range localrange: interesting)
- {
- if (diff.intersects(localrange))
- {
- differences.add(diff);
- break; // the inner loop
- }
- }
- }
+ differences.addAll(diff.intersectionWith(localrange));
// choose a repair method based on the significance of the
difference
- float difference = differenceFraction();
- String format = "Endpoints " + local + " and " + request.endpoint
+ " are %s for " + request.cf;
- if (difference == 0.0)
+ String format = "Endpoints " + local + " and " + request.endpoint
+ " %s for " + request.cf;
+ if (differences.isEmpty())
{
- logger.info(String.format(format, "consistent"));
+ logger.info(String.format(format, "are consistent"));
AntiEntropyService.instance.completedRequest(request);
return;
}
// non-0 difference: perform streaming repair
- logger.info(String.format(format, (difference * 100) + "% out of
sync"));
+ logger.info(String.format(format, "have " + differences.size() + "
range(s) out of sync"));
try
{
performStreamingRepair();
@@ -497,18 +488,6 @@ public class AntiEntropyService
}
/**
- * @return the fraction of the keyspace that is different, as
represented by our
- * list of different ranges. A range at depth 0 == 1.0, at depth 1 ==
0.5, etc.
- */
- float differenceFraction()
- {
- double fraction = 0.0;
- for (MerkleTree.TreeRange diff : differences)
- fraction += 1.0 / Math.pow(2, diff.depth);
- return (float)fraction;
- }
-
- /**
* Starts sending/receiving our list of differences to/from the remote
endpoint: creates a callback
* that will be called out of band once the streams complete.
*/
Modified:
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java?rev=1036178&r1=1036177&r2=1036178&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
(original)
+++
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
Wed Nov 17 19:45:14 2010
@@ -82,7 +82,7 @@ public class AntiEntropyServiceTest exte
aes = AntiEntropyService.instance;
TokenMetadata tmd = StorageService.instance.getTokenMetadata();
tmd.clearUnsafe();
-
tmd.updateNormalToken(StorageService.getPartitioner().getRandomToken(), LOCAL);
+
StorageService.instance.setToken(StorageService.getPartitioner().getRandomToken());
tmd.updateNormalToken(StorageService.getPartitioner().getMinimumToken(),
REMOTE);
assert tmd.isMember(REMOTE);
@@ -210,19 +210,23 @@ public class AntiEntropyServiceTest exte
validator.complete();
MerkleTree rtree = validator.tree;
- // change a range in one of the trees
- Token min = StorageService.instance.getPartitioner().getMinimumToken();
- ltree.invalidate(min);
- MerkleTree.TreeRange changed = ltree.invalids(new Range(min,
min)).next();
+ // change a range we own in one of the trees
+ Token ltoken = StorageService.instance.getLocalToken();
+ ltree.invalidate(ltoken);
+ MerkleTree.TreeRange changed =
ltree.invalids(StorageService.instance.getLocalPrimaryRange()).next();
changed.hash("non-empty hash!".getBytes());
+ // the changed range has two halves, split on our local token: both
will be repaired
+ // (since this keyspace has RF > N, so every node is responsible for
the entire ring)
+ Set<Range> interesting = new HashSet<Range>();
+ interesting.add(new Range(changed.left, ltoken));
+ interesting.add(new Range(ltoken, changed.right));
// difference the trees
Differencer diff = new Differencer(request, ltree, rtree);
diff.run();
// ensure that the changed range was recorded
- assertEquals("Wrong number of differing ranges", 1,
diff.differences.size());
- assertEquals("Wrong differing range", changed,
diff.differences.get(0));
+ assertEquals("Wrong differing ranges", interesting, new
HashSet<Range>(diff.differences));
}
Set<InetAddress> addTokens(int max) throws Throwable