I noticed that the DecoratedKey printed in the stack trace can be for a
different table. The arguments are a token and a partition key and they
can be the same for multiple tables. Is there a way to know for which
table the DigestMismatchException happens?
Can the AsyncRepairRunner be triggered if read and writes for all other
tables are done with CL=LOCAL_QUORUM (RF=3)? I assumed in that case
async read repair is not done even if dclocal_read_repair_chance > 0.
Could it be that the async repair runs for that case and it's executed
faster than the background syncing to meet RF=3?
On 10/26/2017 12:19 PM, Artur Siekielski wrote:
Hi,
we have one table for which reads and writes are done with CL=ONE. The
table contains counters. We wanted to disable async read repair for
the table (to lessen cluster load and to avoid
DigestMismatchExceptions in debug.log). After altering the table with
read_repair_chance=0, dclocal_read_repair_chance=0, the Digest
exceptions still happen:
DEBUG [ReadRepairStage:92] 2017-10-26 10:00:02,798
ReadCallback.java:242 - Digest mismatch:
org.apache.cassandra.service.DigestMismatchException: Mismatch for key
DecoratedKey(5238932067721150894, 7da6f64695d74899a91bd691321de534)
(33f950054869a91d1ea225eae342499a vs 70d054183b9b001de5f71139aa65b8d9)
at
org.apache.cassandra.service.DigestResolver.compareResponses(DigestResolver.java:92)
~[apache-cassandra-3.11.1.jar:3.11.1]
at
org.apache.cassandra.service.ReadCallback$AsyncRepairRunner.run(ReadCallback.java:233)
~[apache-cassandra-3.11.1.jar:3.11.1]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[na:1.8.0_141]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[na:1.8.0_141]
at
org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:81)
[apache-cassandra-3.11.1.jar:3.11.1]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_141]
I have verified that the DecoratedKey arguments are for a row from the
altered table (by checking token() of the partition key).
Shouldn't the settings disable AsyncRepairRunner for the table?
Is there an option to disable async read repair globally, or each
table must be altered?
Cassandra version: 3.11.1
Thanks,
Artur
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@cassandra.apache.org
For additional commands, e-mail: user-h...@cassandra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@cassandra.apache.org
For additional commands, e-mail: user-h...@cassandra.apache.org