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


Reply via email to