Author: brandonwilliams
Date: Mon Jul 26 22:10:10 2010
New Revision: 979465

URL: http://svn.apache.org/viewvc?rev=979465&view=rev
Log:
fix read repair to use requested consistency level on digest mismatch, rather 
than assuming QUORUM. Patch by brandonwilliams and jbellis, reviewed by 
brandonwilliams for CASSANDRA-1316.

Modified:
    cassandra/branches/cassandra-0.6/CHANGES.txt
    
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/StorageProxy.java

Modified: cassandra/branches/cassandra-0.6/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/CHANGES.txt?rev=979465&r1=979464&r2=979465&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.6/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.6/CHANGES.txt Mon Jul 26 22:10:10 2010
@@ -22,6 +22,9 @@
  * remove gossip message size limit (CASSANDRA-1138)
  * parallelize local and remote reads during multiget, and respect snitch 
    when determining whether to do local read for CL.ONE (CASSANDRA-1317)
+ * fix read repair to use requested consistency level on digest mismatch,
+   rather than assuming QUORUM (CASSANDRA-1316)
+
 
 
 0.6.3

Modified: 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/StorageProxy.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/StorageProxy.java?rev=979465&r1=979464&r2=979465&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/StorageProxy.java
 (original)
+++ 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/StorageProxy.java
 Mon Jul 26 22:10:10 2010
@@ -475,7 +475,7 @@ public class StorageProxy implements Sto
                 if (logger.isDebugEnabled())
                     logger.debug("strongread reading " + (m == message ? 
"data" : "digest") + " for " + command + " from " + m.getMessageId() + "@" + 
endpoint);
             }
-            QuorumResponseHandler<Row> quorumResponseHandler = new 
QuorumResponseHandler<Row>(DatabaseDescriptor.getQuorum(command.table), new 
ReadResponseResolver(command.table, responseCount));
+            QuorumResponseHandler<Row> quorumResponseHandler = new 
QuorumResponseHandler<Row>(responseCount, new 
ReadResponseResolver(command.table, responseCount));
             MessagingService.instance.sendRR(messages, endPoints, 
quorumResponseHandler);
             quorumResponseHandlers.add(quorumResponseHandler);
             commandEndPoints.add(endPoints);
@@ -499,10 +499,9 @@ public class StorageProxy implements Sto
             {
                 if (DatabaseDescriptor.getConsistencyCheck())
                 {
-                    IResponseResolver<Row> readResponseResolverRepair = new 
ReadResponseResolver(command.table, 
DatabaseDescriptor.getQuorum(command.table));
-                    QuorumResponseHandler<Row> quorumResponseHandlerRepair = 
new QuorumResponseHandler<Row>(
-                            DatabaseDescriptor.getQuorum(command.table),
-                            readResponseResolverRepair);
+                    int responseCount = 
determineBlockFor(DatabaseDescriptor.getReplicationFactor(command.table), 
consistency_level);
+                    IResponseResolver<Row> readResponseResolverRepair = new 
ReadResponseResolver(command.table, responseCount);
+                    QuorumResponseHandler<Row> quorumResponseHandlerRepair = 
new QuorumResponseHandler<Row>(responseCount, readResponseResolverRepair);
                     logger.info("DigestMismatchException: " + ex.getMessage());
                     Message messageRepair = command.makeReadMessage();
                     MessagingService.instance.sendRR(messageRepair, 
commandEndPoints.get(commandIndex), quorumResponseHandlerRepair);


Reply via email to