Repository: cassandra
Updated Branches:
  refs/heads/trunk 27c937477 -> ee9e06b5a


Reinstate repaired data tracking if read repair is disabled

Patch by Sam Tunnicliffe; reviewed by Alex Petrov for CASSANDRA-14755


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

Branch: refs/heads/trunk
Commit: ee9e06b5a75c0be954694b191ea4170456015b98
Parents: 27c9374
Author: Sam Tunnicliffe <[email protected]>
Authored: Mon Sep 17 10:08:51 2018 +0100
Committer: Sam Tunnicliffe <[email protected]>
Committed: Thu Sep 20 12:16:30 2018 +0100

----------------------------------------------------------------------
 .../cassandra/service/reads/DataResolver.java   | 22 ++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/ee9e06b5/src/java/org/apache/cassandra/service/reads/DataResolver.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/reads/DataResolver.java 
b/src/java/org/apache/cassandra/service/reads/DataResolver.java
index db5f3c8..03f718f 100644
--- a/src/java/org/apache/cassandra/service/reads/DataResolver.java
+++ b/src/java/org/apache/cassandra/service/reads/DataResolver.java
@@ -164,9 +164,27 @@ public class DataResolver<E extends Endpoints<E>, P 
extends ReplicaPlan.ForRead<
                                                                          P 
sources,
                                                                          
RepairedDataTracker repairedDataTracker)
     {
-        // Avoid wrapping no-op listeners as it doesn't throw
+        // Avoid wrapping no-op listener as it doesn't throw, unless we're 
tracking repaired status
+        // in which case we need to inject the tracker & verify on close
         if (partitionListener == 
UnfilteredPartitionIterators.MergeListener.NOOP)
-            return partitionListener;
+        {
+            if (repairedDataTracker == null)
+                return partitionListener;
+
+            return new UnfilteredPartitionIterators.MergeListener()
+            {
+
+                public UnfilteredRowIterators.MergeListener 
getRowMergeListener(DecoratedKey partitionKey, List<UnfilteredRowIterator> 
versions)
+                {
+                    return UnfilteredRowIterators.MergeListener.NOOP;
+                }
+
+                public void close()
+                {
+                    repairedDataTracker.verify();
+                }
+            };
+        }
 
         return new UnfilteredPartitionIterators.MergeListener()
         {


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

Reply via email to