[ https://issues.apache.org/jira/browse/CASSANDRA-16049?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sam Tunnicliffe updated CASSANDRA-16049: ---------------------------------------- Test and Documentation Plan: Test-only fix, clean run of unit tests should be sufficient. Status: Patch Available (was: In Progress) The issue is that the query which is intended to trigger the read repair is done at {{CL.ALL}}. Since one of the replicas is unresponsive, this query simply times out. This looks to have just been an oversight in the original patch and changing to read at {{CL.QUORUM}} fixes it. ||Branch||JDK8||JDK11|| |[16049-trunk|https://github.com/beobal/cassandra/tree/16049-trunk]|[utests|https://app.circleci.com/pipelines/github/beobal/cassandra/92/workflows/431fc8ac-07d8-4f8e-a812-a5ecb896bacd/jobs/1888]|[utests|https://app.circleci.com/pipelines/github/beobal/cassandra/92/workflows/9e34b845-c2e4-4ccb-870d-b62ec6a54316/jobs/1891]| > org.apache.cassandra.distributed.test.ReadRepairTest#movingTokenReadRepairTest > passes because the message drop filters are not dropping the messages > ---------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: CASSANDRA-16049 > URL: https://issues.apache.org/jira/browse/CASSANDRA-16049 > Project: Cassandra > Issue Type: Bug > Components: Consistency/Repair, Test/dtest/java > Reporter: David Capwell > Assignee: Sam Tunnicliffe > Priority: Normal > Fix For: 4.0-beta > > > The test tries to block messages from node 4 to 3 but used verb ordinal > rather than id; this causes the verbs to sent to node 3 and allow all replies > to happen. > If you fix the test to use id (and actually filter), then the test fails > Patch to show the issue > {code} > diff --git > a/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java > b/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java > index f0c82b85e1..55d2e8f303 100644 > --- > a/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java > +++ > b/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java > @@ -30,14 +30,14 @@ import org.apache.cassandra.dht.Token; > import org.apache.cassandra.distributed.Cluster; > import org.apache.cassandra.distributed.api.ConsistencyLevel; > import org.apache.cassandra.distributed.api.ICluster; > -import org.apache.cassandra.distributed.shared.NetworkTopology; > import org.apache.cassandra.locator.InetAddressAndPort; > import org.apache.cassandra.service.PendingRangeCalculatorService; > import org.apache.cassandra.service.StorageService; > +import static org.apache.cassandra.distributed.shared.AssertUtils.assertRows; > +import static org.apache.cassandra.distributed.shared.AssertUtils.row; > import static org.apache.cassandra.net.Verb.READ_REPAIR_REQ; > import static org.apache.cassandra.net.Verb.READ_REQ; > -import static org.apache.cassandra.distributed.shared.AssertUtils.*; > public class ReadRepairTest extends TestBaseImpl > { > @@ -115,8 +115,8 @@ public class ReadRepairTest extends TestBaseImpl > // prevent #4 from reading or writing to #3, so our QUORUM must > contain #2 and #4 > // since #1 is taking over the range, this means any read-repair > must make it to #1 as well > - cluster.filters().verbs(READ_REQ.ordinal()).from(4).to(3).drop(); > - > cluster.filters().verbs(READ_REPAIR_REQ.ordinal()).from(4).to(3).drop(); > + cluster.filters().verbs(READ_REQ.id).from(4).to(3).drop(); > + cluster.filters().verbs(READ_REPAIR_REQ.id).from(4).to(3).drop(); > assertRows(cluster.coordinator(4).execute("SELECT * FROM " + > KEYSPACE + ".tbl WHERE pk = ?", > ConsistencyLevel.ALL, > i), > row(i, 1, 1)); > {code} > Exception > {code} > org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - > received only 2 responses. > at > org.apache.cassandra.service.reads.ReadCallback.awaitResults(ReadCallback.java:120) > at > org.apache.cassandra.service.reads.AbstractReadExecutor.awaitResponses(AbstractReadExecutor.java:373) > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1823) > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1713) > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1630) > at > org.apache.cassandra.db.SinglePartitionReadCommand$Group.execute(SinglePartitionReadCommand.java:1123) > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:294) > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:246) > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:88) > at > org.apache.cassandra.distributed.impl.Coordinator.executeInternal(Coordinator.java:100) > at > org.apache.cassandra.distributed.impl.Coordinator.lambda$executeWithResult$0(Coordinator.java:62) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at > io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > at java.lang.Thread.run(Thread.java:748) > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org