Author: jbellis
Date: Wed Apr 20 18:14:54 2011
New Revision: 1095473
URL: http://svn.apache.org/viewvc?rev=1095473&view=rev
Log:
fixes for verifying destinationavailability under hinted conditions
patch by Narendra Sharma and jbellis for CASSANDRA-2514
Modified:
cassandra/branches/cassandra-0.7/CHANGES.txt
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/DatacenterSyncWriteResponseHandler.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/DatacenterWriteResponseHandler.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/WriteResponseHandler.java
Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1095473&r1=1095472&r2=1095473&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Wed Apr 20 18:14:54 2011
@@ -34,6 +34,8 @@
* fix backslash substitutions in CLI (CASSANDRA-2492)
* count a row deletion as one operation towards memtable threshold
(CASSANDRA-2519)
+ * fixes for verifying destination availability under hinted conditions
+ so UE can be thrown intead of timing out (CASSANDRA-2514)
0.7.4
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/DatacenterSyncWriteResponseHandler.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/DatacenterSyncWriteResponseHandler.java?rev=1095473&r1=1095472&r2=1095473&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/DatacenterSyncWriteResponseHandler.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/DatacenterSyncWriteResponseHandler.java
Wed Apr 20 18:14:54 2011
@@ -102,10 +102,12 @@ public class DatacenterSyncWriteResponse
dcEndpoints.put(dc, new AtomicInteger());
for (InetAddress destination : hintedEndpoints.keySet())
{
- assert writeEndpoints.contains(destination);
- // figure out the destination dc
- String destinationDC = snitch.getDatacenter(destination);
- dcEndpoints.get(destinationDC).incrementAndGet();
+ if (writeEndpoints.contains(destination))
+ {
+ // figure out the destination dc
+ String destinationDC = snitch.getDatacenter(destination);
+ dcEndpoints.get(destinationDC).incrementAndGet();
+ }
}
// Throw exception if any of the DC doesn't have livenodes to accept
write.
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/DatacenterWriteResponseHandler.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/DatacenterWriteResponseHandler.java?rev=1095473&r1=1095472&r2=1095473&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/DatacenterWriteResponseHandler.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/DatacenterWriteResponseHandler.java
Wed Apr 20 18:14:54 2011
@@ -84,9 +84,9 @@ public class DatacenterWriteResponseHand
public void assureSufficientLiveNodes() throws UnavailableException
{
int liveNodes = 0;
- for (InetAddress destination : writeEndpoints)
+ for (InetAddress destination : hintedEndpoints.keySet())
{
- if (localdc.equals(snitch.getDatacenter(destination)))
+ if (localdc.equals(snitch.getDatacenter(destination)) &&
writeEndpoints.contains(destination))
liveNodes++;
}
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/WriteResponseHandler.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/WriteResponseHandler.java?rev=1095473&r1=1095472&r2=1095473&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/WriteResponseHandler.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/WriteResponseHandler.java
Wed Apr 20 18:14:54 2011
@@ -100,6 +100,7 @@ public class WriteResponseHandler extend
// ensure there are blockFor distinct living nodes (hints are ok).
if (hintedEndpoints.keySet().size() < responses.get())
throw new UnavailableException();
+ return;
}
// count destinations that are part of the desired target set