Author: jbellis
Date: Mon Oct 3 21:42:56 2011
New Revision: 1178595
URL: http://svn.apache.org/viewvc?rev=1178595&view=rev
Log:
merge from 1.0.0
Modified:
cassandra/branches/cassandra-1.0/ (props changed)
cassandra/branches/cassandra-1.0/CHANGES.txt
cassandra/branches/cassandra-1.0/contrib/ (props changed)
cassandra/branches/cassandra-1.0/debian/cassandra.postinst
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
(props changed)
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
(props changed)
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
(props changed)
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
(props changed)
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
(props changed)
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/FailureDetector.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/Gossiper.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/IFailureDetector.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/locator/SimpleSeedProvider.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/service/StorageService.java
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/dht/BootStrapperTest.java
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
Propchange: cassandra/branches/cassandra-1.0/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 3 21:42:56 2011
@@ -1,11 +1,11 @@
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1131291
/cassandra/branches/cassandra-0.7:1026516-1170333,1172024
/cassandra/branches/cassandra-0.7.0:1053690-1055654
-/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1177149,1177781,1177810,1178297,1178325
+/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1178554
/cassandra/branches/cassandra-0.8.0:1125021-1130369
/cassandra/branches/cassandra-0.8.1:1101014-1125018
/cassandra/branches/cassandra-1.0:1167106,1167185
-/cassandra/branches/cassandra-1.0.0:1167104-1178459
+/cassandra/branches/cassandra-1.0.0:1167104-1178594
/cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
/cassandra/tags/cassandra-0.8.0-rc1:1102511-1125020
/cassandra/trunk:1167085-1167102,1169870
Modified: cassandra/branches/cassandra-1.0/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/CHANGES.txt?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/CHANGES.txt (original)
+++ cassandra/branches/cassandra-1.0/CHANGES.txt Mon Oct 3 21:42:56 2011
@@ -9,6 +9,13 @@
* Force flush of status table when removing/updating token (CASSANDRA-3243)
* fix bug preventing obsolete commitlog segments from being removed
(CASSANDRA-3269)
+ * Evict gossip state immediately when a token is taken over by a new IP
(CASSANDRA-3259)
+ * tolerate whitespace in seed CDL (CASSANDRA-3263)
+ * Fix bug where the failure detector can take too long to mark a host
+ down (CASSANDRA-3273)
+ * (Hadoop) allow wrapping ranges in queries (CASSANDRA-3137)
+ * (Hadoop) check all interfaces for a match with split location
+ before falling back to random replica (CASSANDRA-3211)
1.0.0-rc2
@@ -29,6 +36,8 @@
* ignore any CF ids sent by client for adding CF/KS (CASSANDRA-3288)
* remove obsolete hints on first startup (CASSANDRA-3291)
* use correct ISortedColumns for time-optimized reads (CASSANDRA-3289)
+ * Evict gossip state immediately when a token is taken over by a new IP
(CASSANDRA-3259)
+
1.0.0-rc1
* Update CQL to generate microsecond timestamps by default (CASSANDRA-3227)
Propchange: cassandra/branches/cassandra-1.0/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 3 21:42:56 2011
@@ -1,11 +1,11 @@
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
/cassandra/branches/cassandra-0.7/contrib:1026516-1170333,1172024
/cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
-/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1177149,1177781,1177810,1178297,1178325
+/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1178554
/cassandra/branches/cassandra-0.8.0/contrib:1125021-1130369
/cassandra/branches/cassandra-0.8.1/contrib:1101014-1125018
/cassandra/branches/cassandra-1.0/contrib:1167106,1167185
-/cassandra/branches/cassandra-1.0.0/contrib:1167104-1178459
+/cassandra/branches/cassandra-1.0.0/contrib:1167104-1178594
/cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
/cassandra/tags/cassandra-0.8.0-rc1/contrib:1102511-1125020
/cassandra/trunk/contrib:1167085-1167102,1169870
Modified: cassandra/branches/cassandra-1.0/debian/cassandra.postinst
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/debian/cassandra.postinst?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/debian/cassandra.postinst (original)
+++ cassandra/branches/cassandra-1.0/debian/cassandra.postinst Mon Oct 3
21:42:56 2011
@@ -34,7 +34,7 @@ case "$1" in
cassandra
fi
- if [ -n "$2" ] && dpkg --compare-versions "$2" le 0.6.4-2; then
+ if [ -z "$2" ]; then
chown -R cassandra: /var/lib/cassandra
chown -R cassandra: /var/log/cassandra
fi
Propchange:
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 3 21:42:56 2011
@@ -1,11 +1,11 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1170333,1172024
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1177149,1177781,1177810,1178297,1178325
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1178554
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1130369
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1101014-1125018
/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167106,1167185
-/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167104-1178459
+/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167104-1178594
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1102511-1125020
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167085-1167102,1169870
Propchange:
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 3 21:42:56 2011
@@ -1,11 +1,11 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1170333,1172024
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1177149,1177781,1177810,1178297,1178325
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1178554
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1125021-1130369
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1101014-1125018
/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167106,1167185
-/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167104-1178459
+/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167104-1178594
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1102511-1125020
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167085-1167102,1169870
Propchange:
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 3 21:42:56 2011
@@ -1,11 +1,11 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1170333,1172024
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1177149,1177781,1177810,1178297,1178325
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1178554
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1125021-1130369
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1101014-1125018
/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167106,1167185
-/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167104-1178459
+/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167104-1178594
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1102511-1125020
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167085-1167102,1169870
Propchange:
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 3 21:42:56 2011
@@ -1,11 +1,11 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1170333,1172024
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1177149,1177781,1177810,1178297,1178325
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1178554
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1125021-1130369
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1101014-1125018
/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167106,1167185
-/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167104-1178459
+/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167104-1178594
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1102511-1125020
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167085-1167102,1169870
Propchange:
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 3 21:42:56 2011
@@ -1,11 +1,11 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1170333,1172024
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1177149,1177781,1177810,1178297,1178325
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1178554
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1125021-1130369
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1101014-1125018
/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167106,1167185
-/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167104-1178459
+/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167104-1178594
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1102511-1125020
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167085-1167102,1169870
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/FailureDetector.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/FailureDetector.java?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/FailureDetector.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/FailureDetector.java
Mon Oct 3 21:42:56 2011
@@ -149,7 +149,14 @@ public class FailureDetector implements
logger_.error("unknown endpoint " + ep);
return epState != null && epState.isAlive();
}
-
+
+ public void clear(InetAddress ep)
+ {
+ ArrivalWindow heartbeatWindow = arrivalSamples_.get(ep);
+ if (heartbeatWindow != null)
+ heartbeatWindow.clear();
+ }
+
public void report(InetAddress ep)
{
if (logger_.isTraceEnabled())
@@ -177,7 +184,9 @@ public class FailureDetector implements
logger_.trace("PHI for " + ep + " : " + phi);
if ( phi > phiConvictThreshold_ )
- {
+ {
+ logger_.trace("notifying listeners that {} is down", ep);
+ logger_.trace("intervals: {} mean: {}", hbWnd, hbWnd.mean());
for ( IFailureDetectionEventListener listener : fdEvntListeners_ )
{
listener.convict(ep, phi);
@@ -234,6 +243,11 @@ class ArrivalWindow
// change.
private final double PHI_FACTOR = 1.0 / Math.log(10.0);
+ // in the event of a long partition, never record an interval longer than
the rpc timeout,
+ // since if a host is regularly experiencing connectivity problems lasting
this long we'd
+ // rather mark it down quickly instead of adapting
+ private final double MAX_INTERVAL_IN_MS =
DatabaseDescriptor.getRpcTimeout();
+
ArrivalWindow(int size)
{
arrivalIntervals_ = new BoundedStatsDeque(size);
@@ -244,14 +258,17 @@ class ArrivalWindow
double interArrivalTime;
if ( tLast_ > 0L )
{
- interArrivalTime = (value - tLast_);
+ interArrivalTime = (value - tLast_);
}
else
{
interArrivalTime = Gossiper.intervalInMillis / 2;
}
- tLast_ = value;
- arrivalIntervals_.add(interArrivalTime);
+ if (interArrivalTime <= MAX_INTERVAL_IN_MS)
+ arrivalIntervals_.add(interArrivalTime);
+ else
+ logger_.debug("Ignoring interval time of {}", interArrivalTime);
+ tLast_ = value;
}
synchronized double sum()
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/Gossiper.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/Gossiper.java?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/Gossiper.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/Gossiper.java
Mon Oct 3 21:42:56 2011
@@ -321,6 +321,17 @@ public class Gossiper implements IFailur
}
/**
+ * Remove the Endpoint and evict immediately, to avoid gossiping about
this node.
+ * This should only be called when a token is taken over by a new IP
address.
+ * @param endpoint The endpoint that has been replaced
+ */
+ public void replacedEndpoint(InetAddress endpoint)
+ {
+ removeEndpoint(endpoint);
+ evictFromMembership(endpoint);
+ }
+
+ /**
* The gossip digest is built based on randomization
* rather than just looping through the collection of live endpoints.
*
@@ -674,6 +685,13 @@ public class Gossiper implements IFailur
if ( remoteGeneration > localGeneration )
{
localEndpointState.updateTimestamp();
+ // this node was dead and the generation changed, this
indicates a reboot, or possibly a takeover
+ // we will clean the fd intervals for it and relearn them
+ if (!localEndpointState.isAlive())
+ {
+ logger.debug("Clearing interval times for {} due to
generation change", endpoint);
+ fd.clear(endpoint);
+ }
fd.report(endpoint);
return;
}
@@ -685,6 +703,7 @@ public class Gossiper implements IFailur
if ( remoteVersion > localVersion )
{
localEndpointState.updateTimestamp();
+ // just a version change, report to the fd
fd.report(endpoint);
}
}
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/IFailureDetector.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/IFailureDetector.java?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/IFailureDetector.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/gms/IFailureDetector.java
Mon Oct 3 21:42:56 2011
@@ -37,7 +37,13 @@ public interface IFailureDetector
* @return true if UP and false if DOWN.
*/
public boolean isAlive(InetAddress ep);
-
+
+ /**
+ * Clear any existing interval timings for this endpoint
+ * @param ep
+ */
+ public void clear(InetAddress ep);
+
/**
* This method is invoked by any entity wanting to interrogate the status
of an endpoint.
* In our case it would be the Gossiper. The Failure Detector will then
calculate Phi and
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
Mon Oct 3 21:42:56 2011
@@ -134,13 +134,13 @@ public class ColumnFamilyInputFormat ext
if (dhtRange.intersects(jobRange))
{
- Set<Range> intersections =
dhtRange.intersectionWith(jobRange);
- assert intersections.size() == 1 : "wrapping ranges
not yet supported";
- Range intersection = intersections.iterator().next();
- range.start_token =
partitioner.getTokenFactory().toString(intersection.left);
- range.end_token =
partitioner.getTokenFactory().toString(intersection.right);
- // for each range, pick a live owner and ask it to
compute bite-sized splits
- splitfutures.add(executor.submit(new
SplitCallable(range, conf)));
+ for (Range intersection:
dhtRange.intersectionWith(jobRange))
+ {
+ range.start_token =
partitioner.getTokenFactory().toString(intersection.left);
+ range.end_token =
partitioner.getTokenFactory().toString(intersection.right);
+ // for each range, pick a live owner and ask it to
compute bite-sized splits
+ splitfutures.add(executor.submit(new
SplitCallable(range, conf)));
+ }
}
}
}
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
Mon Oct 3 21:42:56 2011
@@ -23,6 +23,8 @@ package org.apache.cassandra.hadoop;
import java.io.IOException;
import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.util.*;
@@ -31,14 +33,11 @@ import com.google.common.collect.Abstrac
import org.apache.cassandra.auth.SimpleAuthenticator;
import org.apache.cassandra.config.ConfigurationException;
-import org.apache.cassandra.db.*;
+import org.apache.cassandra.db.IColumn;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.marshal.TypeParser;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.thrift.*;
-import org.apache.cassandra.thrift.Column;
-import org.apache.cassandra.thrift.CounterColumn;
-import org.apache.cassandra.thrift.SuperColumn;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.Pair;
@@ -147,15 +146,18 @@ public class ColumnFamilyRecordReader ex
// not necessarily on Cassandra machines, too. This should be adequate
for single-DC clusters, at least.
private String getLocation()
{
- InetAddress[] localAddresses;
+ ArrayList<InetAddress> localAddresses = new ArrayList<InetAddress>();
try
{
- localAddresses =
InetAddress.getAllByName(InetAddress.getLocalHost().getHostAddress());
+ Enumeration<NetworkInterface> nets =
NetworkInterface.getNetworkInterfaces();
+ while (nets.hasMoreElements())
+
localAddresses.addAll(Collections.list(nets.nextElement().getInetAddresses()));
}
- catch (UnknownHostException e)
+ catch (SocketException e)
{
throw new AssertionError(e);
}
+
for (InetAddress address : localAddresses)
{
for (String location : split.getLocations())
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/locator/SimpleSeedProvider.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/locator/SimpleSeedProvider.java?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/locator/SimpleSeedProvider.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/locator/SimpleSeedProvider.java
Mon Oct 3 21:42:56 2011
@@ -43,7 +43,7 @@ public class SimpleSeedProvider implemen
{
try
{
- seeds.add(InetAddress.getByName(host));
+ seeds.add(InetAddress.getByName(host.trim()));
}
catch (UnknownHostException ex)
{
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/service/StorageService.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/service/StorageService.java?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/service/StorageService.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/service/StorageService.java
Mon Oct 3 21:42:56 2011
@@ -492,6 +492,7 @@ public class StorageService implements I
&& !SystemTable.isBootstrapped())
logger_.info("This node will not auto bootstrap because it is
configured to be a seed node.");
+ InetAddress current = null;
// first startup is only chance to bootstrap
Token<?> token;
if (DatabaseDescriptor.isAutoBootstrap()
@@ -535,7 +536,7 @@ public class StorageService implements I
}
token =
StorageService.getPartitioner().getTokenFactory().fromString(DatabaseDescriptor.getReplaceToken());
// check for operator errors...
- InetAddress current = tokenMetadata_.getEndpoint(token);
+ current = tokenMetadata_.getEndpoint(token);
if (null != current &&
Gossiper.instance.getEndpointStateForEndpoint(current).getUpdateTimestamp() >
(System.currentTimeMillis() - delay))
throw new UnsupportedOperationException("Cannnot replace a
token for a Live node... ");
setMode("Joining: Replacing a node with token: " + token,
true);
@@ -570,6 +571,9 @@ public class StorageService implements I
// start participating in the ring.
SystemTable.setBootstrapped(true);
setToken(token);
+ // remove the existing info about the replaced node.
+ if (current != null)
+ Gossiper.instance.replacedEndpoint(current);
logger_.info("Bootstrap/Replace/Move completed! Now serving reads.");
assert tokenMetadata_.sortedTokens().size() > 0;
}
Modified:
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/dht/BootStrapperTest.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/dht/BootStrapperTest.java?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/dht/BootStrapperTest.java
(original)
+++
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/dht/BootStrapperTest.java
Mon Oct 3 21:42:56 2011
@@ -187,6 +187,7 @@ public class BootStrapperTest extends Cl
public void
registerFailureDetectionEventListener(IFailureDetectionEventListener listener)
{ throw new UnsupportedOperationException(); }
public void
unregisterFailureDetectionEventListener(IFailureDetectionEventListener
listener) { throw new UnsupportedOperationException(); }
public void remove(InetAddress ep) { throw new
UnsupportedOperationException(); }
+ public void clear(InetAddress ep) { throw new
UnsupportedOperationException(); }
};
Multimap<InetAddress, Range> temp = BootStrapper.getWorkMap(res,
mockFailureDetector);
// there isn't any point in testing the size of these collections for
any specific size. When a random partitioner
Modified:
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java?rev=1178595&r1=1178594&r2=1178595&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
(original)
+++
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
Mon Oct 3 21:42:56 2011
@@ -78,7 +78,7 @@ public class CompressedRandomAccessReade
? new CompressedRandomAccessReader(filename, new
CompressionMetadata(filename + ".metadata", f.length()), false)
: new RandomAccessReader(f,
CompressionParameters.DEFAULT_CHUNK_LENGTH, false);
String expected = "The quick brown fox jumps over the lazy dog";
- assert reader.length() == expected.length();
+ assertEquals(expected.length(), reader.length());
byte[] b = new byte[expected.length()];
reader.readFully(b);
assert new String(b).equals(expected) : "Expecting '" + expected +
"', got '" + new String(b) + "'";