Reverted, with additional comments to make it more clear why the refactor incorrect.
On Wed, Jan 5, 2011 at 3:09 PM, Kelvin Kakugawa <kel...@twitter.com> wrote: > 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 > -- Jonathan Ellis Project Chair, Apache Cassandra co-founder of Riptano, the source for professional Cassandra support http://riptano.com