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));
          }
      }
  

Reply via email to