You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2010/10/15 21:55:31 UTC
svn commit: r1023089 -
/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/service/ReadResponseResolver.java
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.");