Merge branch 'cassandra-2.1' into trunk
Conflicts:
src/java/org/apache/cassandra/service/AbstractReadExecutor.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9c6cf3cd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9c6cf3cd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9c6cf3cd
Branch: refs/heads/trunk
Commit: 9c6cf3cdf4267b4aebb0f432d0776314f3c40c8c
Parents: a792a7b e2d140f
Author: Aleksey Yeschenko <[email protected]>
Authored: Wed Jan 21 00:59:40 2015 +0300
Committer: Aleksey Yeschenko <[email protected]>
Committed: Wed Jan 21 00:59:40 2015 +0300
----------------------------------------------------------------------
.../org/apache/cassandra/db/ReadCommand.java | 3 +-
.../db/RetriedSliceFromReadCommand.java | 4 +-
.../cassandra/db/SliceByNamesReadCommand.java | 8 +--
.../cassandra/db/SliceFromReadCommand.java | 8 +--
.../cassandra/service/AbstractReadExecutor.java | 56 +++++++++-----------
5 files changed, 31 insertions(+), 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c6cf3cd/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/AbstractReadExecutor.java
index d76a2cc,0546e27..ec96d81
--- a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
+++ b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
@@@ -107,14 -94,21 +95,21 @@@ public abstract class AbstractReadExecu
{
if (isLocalRequest(endpoint))
{
- logger.trace("reading digest locally");
- StageManager.getStage(Stage.READ).execute(new
LocalReadRunnable(digestCommand, handler));
- }
- else
- {
- logger.trace("reading digest from {}", endpoint);
- MessagingService.instance().sendRRWithFailure(message,
endpoint, handler);
+ hasLocalEndpoint = true;
+ continue;
}
+
+ logger.trace("reading {} from {}", readCommand.isDigestQuery() ?
"digest" : "data", endpoint);
+ if (message == null)
+ message = readCommand.createMessage();
- MessagingService.instance().sendRR(message, endpoint, handler);
++ MessagingService.instance().sendRRWithFailure(message, endpoint,
handler);
+ }
+
+ // We delay the local (potentially blocking) read till the end to
avoid stalling remote requests.
+ if (hasLocalEndpoint)
+ {
+ logger.trace("reading {} locally", readCommand.isDigestQuery() ?
"digest" : "data");
+ StageManager.getStage(Stage.READ).maybeExecuteImmediately(new
LocalReadRunnable(command, handler));
}
}