Author: jbellis
Date: Sat Jan 15 19:37:11 2011
New Revision: 1059401
URL: http://svn.apache.org/viewvc?rev=1059401&view=rev
Log:
fix read repair on CL.ONE regression
patch by jbellis; reviewed by tjake for CASSANDRA-1985
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/RepairCallback.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageProxy.java
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/RepairCallback.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/RepairCallback.java?rev=1059401&r1=1059400&r2=1059401&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/RepairCallback.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/RepairCallback.java
Sat Jan 15 19:37:11 2011
@@ -13,9 +13,9 @@ import org.apache.cassandra.utils.Simple
public class RepairCallback<T> implements IAsyncCallback
{
- public final IResponseResolver<T> resolver;
+ private final IResponseResolver<T> resolver;
private final List<InetAddress> endpoints;
- protected final SimpleCondition condition = new SimpleCondition();
+ private final SimpleCondition condition = new SimpleCondition();
private final long startTime;
public RepairCallback(IResponseResolver<T> resolver, List<InetAddress>
endpoints)
@@ -41,10 +41,9 @@ public class RepairCallback<T> implement
throw new AssertionError(ex);
}
- return resolver.resolve();
+ return resolver.isDataPresent() ? resolver.resolve() : null;
}
-
public void response(Message message)
{
resolver.preprocess(message);
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageProxy.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageProxy.java?rev=1059401&r1=1059400&r2=1059401&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageProxy.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageProxy.java
Sat Jan 15 19:37:11 2011
@@ -867,7 +867,15 @@ public class StorageProxy implements Sto
{
if (logger.isDebugEnabled())
logger.debug("Digest mismatch:", e);
- repair(command, endpoints);
+ final RepairCallback<Row> callback = repair(command,
endpoints);
+ Runnable runnable = new WrappedRunnable()
+ {
+ public void runMayThrow() throws DigestMismatchException,
IOException, TimeoutException
+ {
+ callback.get();
+ }
+ };
+ repairExecutor.schedule(runnable,
DatabaseDescriptor.getRpcTimeout(), TimeUnit.MILLISECONDS);
}
}
}