[ https://issues.apache.org/jira/browse/CASSANDRA-937?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jonathan Ellis updated CASSANDRA-937: ------------------------------------- Attachment: 937-2.txt Repair is always invoked by a node that has a copy of the data, or thinks it should (that is how it gets the "initial row" to compare digests against), but if the definition of who should have replicas changes either from bootstrap or during rebuilding of the ring after a cluster restart then local node could be an "extra" replica at repair time. This patch changes repair to keep the replica set constant throughout the process. It also fixes repair to start comparing digests immediately rather than waiting for all responses first for no reason, and avoids an extra read from the local replica, re-using the one that we've been comparing digests with. > Invalid Response count 4 > ------------------------ > > Key: CASSANDRA-937 > URL: https://issues.apache.org/jira/browse/CASSANDRA-937 > Project: Cassandra > Issue Type: Bug > Components: Core > Environment: replication factor is set to 3 > Reporter: Dan Di Spaltro > Fix For: 0.6.1 > > Attachments: 937-2.txt > > > 2010-03-30_21:59:04.64973 ERROR - Error in ThreadPoolExecutor > 2010-03-30_21:59:04.64973 java.lang.AssertionError: invalid response count 4 > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.service.ReadResponseResolver.<init>(ReadResponseResolver.java:54) > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.service.ConsistencyManager$DigestResponseHandler.doReadRepair(ConsistencyManager.java:89) > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.service.ConsistencyManager$DigestResponseHandler.handleDigestResponses(ConsistencyManager.java:75) > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.service.ConsistencyManager$DigestResponseHandler.response(ConsistencyManager.java:60) > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.net.ResponseVerbHandler.doVerb(ResponseVerbHandler.java:35) > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:40) > 2010-03-30_21:59:04.64973 at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) > 2010-03-30_21:59:04.64973 at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) > 2010-03-30_21:59:04.64973 at java.lang.Thread.run(Thread.java:636) > 2010-03-30_21:59:04.64973 ERROR - Fatal exception in thread > Thread[RESPONSE-STAGE:5,5,main] > 2010-03-30_21:59:04.64973 java.lang.AssertionError: invalid response count 4 > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.service.ReadResponseResolver.<init>(ReadResponseResolver.java:54) > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.service.ConsistencyManager$DigestResponseHandler.doReadRepair(ConsistencyManager.java:89) > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.service.ConsistencyManager$DigestResponseHandler.handleDigestResponses(ConsistencyManager.java:75) > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.service.ConsistencyManager$DigestResponseHandler.response(ConsistencyManager.java:60) > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.net.ResponseVerbHandler.doVerb(ResponseVerbHandler.java:35) > 2010-03-30_21:59:04.64973 at > org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:40) > 2010-03-30_21:59:04.64973 at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) > 2010-03-30_21:59:04.64973 at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) > 2010-03-30_21:59:04.64973 at java.lang.Thread.run(Thread.java:636) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.