More detailed read repair metrics. Patch by Jingsi Zhu, reviewed by brandonwilliams for CASSANDRA-5618
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b4b30cf8 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b4b30cf8 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b4b30cf8 Branch: refs/heads/trunk Commit: b4b30cf87cbf3f7957c64f625f0f90d24b43b49c Parents: 6193fef Author: Brandon Williams <[email protected]> Authored: Wed Jun 5 21:41:54 2013 -0500 Committer: Brandon Williams <[email protected]> Committed: Wed Jun 5 21:46:27 2013 -0500 ---------------------------------------------------------------------- .../cassandra/service/AbstractReadExecutor.java | 11 ++++++++++- .../org/apache/cassandra/service/StorageProxy.java | 5 ++++- .../cassandra/service/StorageProxyMBean.java | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/b4b30cf8/src/java/org/apache/cassandra/service/AbstractReadExecutor.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java index 1c7c6f9..f944507 100644 --- a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java +++ b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java @@ -25,6 +25,7 @@ import org.apache.cassandra.concurrent.Stage; import org.apache.cassandra.concurrent.StageManager; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.Schema; +import org.apache.cassandra.config.ReadRepairDecision; import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.ConsistencyLevel; import org.apache.cassandra.db.ReadCommand; @@ -33,6 +34,7 @@ import org.apache.cassandra.db.Row; import org.apache.cassandra.db.Table; import org.apache.cassandra.exceptions.ReadTimeoutException; import org.apache.cassandra.exceptions.UnavailableException; +import org.apache.cassandra.metrics.ReadRepairMetrics; import org.apache.cassandra.net.MessageOut; import org.apache.cassandra.net.MessagingService; import org.apache.cassandra.service.StorageProxy.LocalReadRunnable; @@ -125,7 +127,14 @@ public abstract class AbstractReadExecutor Table table = Table.open(command.table); List<InetAddress> allReplicas = StorageProxy.getLiveSortedEndpoints(table, command.key); CFMetaData metaData = Schema.instance.getCFMetaData(command.table, command.cfName); - List<InetAddress> queryTargets = consistency_level.filterForQuery(table, allReplicas, metaData.newReadRepairDecision()); + + ReadRepairDecision rrDecision = metaData.newReadRepairDecision(); + + if (rrDecision != ReadRepairDecision.NONE) { + ReadRepairMetrics.attempted.mark(); + } + + List<InetAddress> queryTargets = consistency_level.filterForQuery(table, allReplicas, rrDecision); if (StorageService.instance.isClientMode()) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/b4b30cf8/src/java/org/apache/cassandra/service/StorageProxy.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java index 852e8ca..62e4d86 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -1247,7 +1247,6 @@ public class StorageProxy implements StorageProxyMBean logger.trace("Digest mismatch: {}", ex); ReadRepairMetrics.repairedBlocking.mark(); - // Do a full data read to resolve the correct response (and repair node that need be) RowDataResolver resolver = new RowDataResolver(exec.command.table, exec.command.key, exec.command.filter()); ReadCallback<ReadResponse, Row> repairHandler = exec.handler.withNewResolver(resolver); @@ -1991,6 +1990,10 @@ public class StorageProxy implements StorageProxyMBean public Long getTruncateRpcTimeout() { return DatabaseDescriptor.getTruncateRpcTimeout(); } public void setTruncateRpcTimeout(Long timeoutInMillis) { DatabaseDescriptor.setTruncateRpcTimeout(timeoutInMillis); } public void reloadTriggerClass() { TriggerExecutor.instance.reloadClasses(); } +<<<<<<< HEAD +======= + +>>>>>>> More detailed read repair metrics. public long getReadRepairAttempted() { return ReadRepairMetrics.attempted.count(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/b4b30cf8/src/java/org/apache/cassandra/service/StorageProxyMBean.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/StorageProxyMBean.java b/src/java/org/apache/cassandra/service/StorageProxyMBean.java index 3cb4f17..32fa1be 100644 --- a/src/java/org/apache/cassandra/service/StorageProxyMBean.java +++ b/src/java/org/apache/cassandra/service/StorageProxyMBean.java @@ -92,7 +92,7 @@ public interface StorageProxyMBean public void setTruncateRpcTimeout(Long timeoutInMillis); public void reloadTriggerClass(); - + public long getReadRepairAttempted(); public long getReadRepairRepairedBlocking(); public long getReadRepairRepairedBackground();
