Author: jbellis
Date: Fri Oct 15 19:55:31 2010
New Revision: 1023089

URL: http://svn.apache.org/viewvc?rev=1023089&view=rev
Log:
skip clone on non-mismatch quorum read.  patch by jbellis; tested by Wayne for 
CASSANDRA-1622

Modified:
    
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/ReadResponseResolver.java

Modified: 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/ReadResponseResolver.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/ReadResponseResolver.java?rev=1023089&r1=1023088&r2=1023089&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/ReadResponseResolver.java
 (original)
+++ 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/ReadResponseResolver.java
 Fri Oct 15 19:55:31 2010
@@ -68,6 +68,9 @@ public class ReadResponseResolver implem
       */
        public Row resolve(Collection<Message> responses) throws 
DigestMismatchException, IOException
     {
+        if (logger_.isDebugEnabled())
+            logger_.debug("resolving " + responses.size() + " responses");
+
         long startTime = System.currentTimeMillis();
                List<ColumnFamily> versions = new 
ArrayList<ColumnFamily>(responses.size());
                List<InetAddress> endPoints = new 
ArrayList<InetAddress>(responses.size());
@@ -98,7 +101,11 @@ public class ReadResponseResolver implem
                 key = result.row().key;
             }
         }
-               // If there was a digest query compare it with all the data 
digests 
+
+        if (logger_.isDebugEnabled())
+            logger_.debug("responses deserialized");
+
+               // If there was a digest query compare it with all the data 
digests
                // If there is a mismatch then throw an exception so that read 
repair can happen.
         if (isDigestQuery)
         {
@@ -111,10 +118,22 @@ public class ReadResponseResolver implem
                     throw new DigestMismatchException(s);
                 }
             }
+            if (logger_.isDebugEnabled())
+                logger_.debug("digests verified");
         }
 
-        ColumnFamily resolved = resolveSuperset(versions);
-        maybeScheduleRepairs(resolved, table, key, versions, endPoints);
+        ColumnFamily resolved;
+        if (versions.size() > 1)
+        {
+            resolved = resolveSuperset(versions);
+            if (logger_.isDebugEnabled())
+                logger_.debug("versions merged");
+            maybeScheduleRepairs(resolved, table, key, versions, endPoints);
+        }
+        else
+        {
+            resolved = versions.get(0);
+        }
 
         if (logger_.isDebugEnabled())
             logger_.debug("resolve: " + (System.currentTimeMillis() - 
startTime) + " ms.");


Reply via email to