Repository: cassandra
Updated Branches:
  refs/heads/trunk 6e00ab956 -> f24e23c5f


Avoid running query to self through messaging service

Patch by Alex Petrov; reviewed by Ariel Weisberg for CASSANDRA-14807


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f24e23c5
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f24e23c5
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f24e23c5

Branch: refs/heads/trunk
Commit: f24e23c5f42f27cf74297e5c12de370fc6a724bc
Parents: 6e00ab9
Author: Alex Petrov <[email protected]>
Authored: Fri Oct 5 16:50:52 2018 +0200
Committer: Alex Petrov <[email protected]>
Committed: Fri Oct 12 19:04:00 2018 +0200

----------------------------------------------------------------------
 CHANGES.txt                                              |  1 +
 .../service/reads/repair/AbstractReadRepair.java         | 11 +++++++++++
 2 files changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f24e23c5/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0bfc8c7..ef60329 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 4.0
+ * Avoid running query to self through messaging service (CASSANDRA-14807)
  * Allow using custom script for chronicle queue BinLog archival 
(CASSANDRA-14373)
  * Transient->Full range movements mishandle consistency level upgrade 
(CASSANDRA-14759)
  * ReplicaCollection follow-up (CASSANDRA-14726)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f24e23c5/src/java/org/apache/cassandra/service/reads/repair/AbstractReadRepair.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/service/reads/repair/AbstractReadRepair.java 
b/src/java/org/apache/cassandra/service/reads/repair/AbstractReadRepair.java
index b74f8d3..761ffb0 100644
--- a/src/java/org/apache/cassandra/service/reads/repair/AbstractReadRepair.java
+++ b/src/java/org/apache/cassandra/service/reads/repair/AbstractReadRepair.java
@@ -25,6 +25,9 @@ import com.google.common.base.Preconditions;
 
 import com.codahale.metrics.Meter;
 import com.google.common.base.Predicates;
+
+import org.apache.cassandra.concurrent.Stage;
+import org.apache.cassandra.concurrent.StageManager;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.ColumnFamilyStore;
 import org.apache.cassandra.db.ConsistencyLevel;
@@ -40,6 +43,7 @@ import org.apache.cassandra.metrics.ReadRepairMetrics;
 import org.apache.cassandra.net.MessageOut;
 import org.apache.cassandra.net.MessagingService;
 import org.apache.cassandra.net.ParameterType;
+import org.apache.cassandra.service.StorageProxy;
 import org.apache.cassandra.service.reads.DataResolver;
 import org.apache.cassandra.service.reads.DigestResolver;
 import org.apache.cassandra.service.reads.ReadCallback;
@@ -87,6 +91,13 @@ public abstract class AbstractReadRepair<E extends 
Endpoints<E>, P extends Repli
     void sendReadCommand(Replica to, ReadCallback readCallback, boolean 
speculative)
     {
         ReadCommand command = this.command;
+
+        if (to.isSelf())
+        {
+            StageManager.getStage(Stage.READ).maybeExecuteImmediately(new 
StorageProxy.LocalReadRunnable(command, readCallback));
+            return;
+        }
+
         if (to.isTransient())
         {
             // It's OK to send queries to transient nodes during RR, as we may 
have contacted them for their data request initially


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to