[ https://issues.apache.org/jira/browse/CASSANDRA-9460?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14559407#comment-14559407 ]
Tyler Hobbs edited comment on CASSANDRA-9460 at 5/26/15 5:21 PM: ----------------------------------------------------------------- Good work on investigating this! I think your guess is correct. We definitely need to calculate digests from the untrimmed data, so it seems like we will need to ensure digest calculations have finished before trimming responses. Normally it would be easy to take a digest before returning results to the StorageProxy, because we normally only issue one "data" request and always have to block for that. However, with speculative retries, we may have multiple data responses. So, we should block until we have a digest of the first data response (when CL > ONE), but not block for subsequent data responses (which should not get returned to the SP, and thus should not get trimmed). was (Author: thobbs): Good work on investigating this! I think your guess is correct. We definitely need to calculate digests from the untrimmed data, so it seems like we will either need to ensure digest calculations have finished before trimming responses. Normally it would be easy to take a digest before returning results to the StorageProxy, because we normally only issue one "data" request and always have to block for that. However, with speculative retries, we may have multiple data responses. So, we should block until we have a digest of the first data response (when CL > ONE), but not block for subsequent data responses (which should not get returned to the SP, and thus should not get trimmed). > NullPointerException Creating Digest > ------------------------------------ > > Key: CASSANDRA-9460 > URL: https://issues.apache.org/jira/browse/CASSANDRA-9460 > Project: Cassandra > Issue Type: Bug > Components: Core > Reporter: Tyler Hobbs > Assignee: Stefania > Fix For: 2.1.x > > Attachments: node2.log > > > In the {{consistency_test.TestConsistency.short_read_test}} dtest against > cassandra-2.1, the following error occured: > {noformat} > ERROR [ReadRepairStage:3] 2015-05-22 16:35:25,034 CassandraDaemon.java:223 - > Exception in thread Thread[ReadRepairStage:3,5,main] > java.lang.NullPointerException: null > at > org.apache.cassandra.db.ColumnFamily.updateDigest(ColumnFamily.java:390) > ~[main/:na] > at org.apache.cassandra.db.ColumnFamily.digest(ColumnFamily.java:383) > ~[main/:na] > at > org.apache.cassandra.service.RowDigestResolver.resolve(RowDigestResolver.java:84) > ~[main/:na] > at > org.apache.cassandra.service.RowDigestResolver.resolve(RowDigestResolver.java:28) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback$AsyncRepairRunner.run(ReadCallback.java:176) > ~[main/:na] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > ~[na:1.7.0_80] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > ~[na:1.7.0_80] > at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_80] > {noformat} > From a glance at the code in the stacktrace, it looks like there was a null > cell in the ColumnFamily that we were creating a digest of. This error is > probably particular to "short reads". > Here's the failing test: > http://cassci.datastax.com/job/cassandra-2.1_dtest/lastCompletedBuild/testReport/consistency_test/TestConsistency/short_read_test/. > I've attached the logs for the node with the error. > We saw this issue against 2.1, but the problem may also exist with 2.0 and/or > 2.2. -- This message was sent by Atlassian JIRA (v6.3.4#6332)