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]
