Could we revert / refactor this:
https://github.com/apache/cassandra/commit/c57e7c9e

Testing something in trunk and the above refactor prevents CL > ONE reads.
 The exception is:
ERROR 19:51:52,271 Internal error processing get_counter
java.lang.AssertionError:
org.apache.cassandra.service.DigestMismatchException: Mismatch for key
DecoratedKey(47663949345540697427011412002459125089,
746573742e6b65792e313239343235373039382e303231303034)
(d41d8cd98f00b204e9800998ecf8427e vs 4474cd24733f6b664b61a22bafac4bfe)
 at
org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:469)
at
org.apache.cassandra.service.StorageProxy.readProtocol(StorageProxy.java:352)
 at
org.apache.cassandra.thrift.CassandraServer.readColumnFamily(CassandraServer.java:108)
at
org.apache.cassandra.thrift.CassandraServer.internal_get(CassandraServer.java:296)
 at
org.apache.cassandra.thrift.CassandraServer.get_counter(CassandraServer.java:1075)
at
org.apache.cassandra.thrift.Cassandra$Processor$get_counter.process(Cassandra.java:3874)
 at
org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:3227)
at
org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:167)
 at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.cassandra.service.DigestMismatchException: Mismatch
for key DecoratedKey(47663949345540697427011412002459125089,
746573742e6b65792e313239343235373039382e303231303034)
(d41d8cd98f00b204e9800998ecf8427e vs 4474cd24733f6b664b61a22bafac4bfe)
 at
org.apache.cassandra.service.ReadResponseResolver.resolve(ReadResponseResolver.java:110)
at
org.apache.cassandra.service.ReadResponseResolver.resolve(ReadResponseResolver.java:47)
 at org.apache.cassandra.service.RepairCallback.get(RepairCallback.java:44)
at
org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:463)
 ... 10 more

Basically, it always considers a read a digest read, so if remote replicas
have different values a digest mismatch exception will prevent it from
advancing.  Thanks.

-Kelvin

Reply via email to