You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cassandra.apache.org by Kelvin Kakugawa <ke...@twitter.com> on 2011/01/05 22:09:15 UTC

RRR.resolve broken by commit

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

Re: RRR.resolve broken by commit

Posted by Jonathan Ellis <jb...@gmail.com>.
Reverted, with additional comments to make it more clear why the
refactor incorrect.

On Wed, Jan 5, 2011 at 3:09 PM, Kelvin Kakugawa <ke...@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