[ 
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)

Reply via email to