[
https://issues.apache.org/jira/browse/CASSANDRA-2552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13025337#comment-13025337
]
Jonathan Ellis edited comment on CASSANDRA-2552 at 4/26/11 5:22 PM:
--------------------------------------------------------------------
That sure sounds like a NBHM bug to me. The javadoc says,
bq. Retrievals reflect the results of the most recently completed update
operations holding upon their onset... Similarly, Iterators and Enumerations
return elements reflecting the state of the hash table at some point at or
since the creation of the iterator/enumeration.
I.e., for at least one thread, *both* update operations will have completed
when the iterator is created, so it should see all the entries.
(Will review the actual patch shortly, I'm just saying I think we should report
a bug too.)
was (Author: jbellis):
That sure sounds like a NBHM bug to me. The javadoc says,
bq. Retrievals reflect the results of the most recently completed update
operations holding upon their onset... Similarly, Iterators and Enumerations
return elements reflecting the state of the hash table at some point at or
since the creation of the iterator/enumeration.
> ReadResponseResolver Race
> -------------------------
>
> Key: CASSANDRA-2552
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2552
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Reporter: Stu Hood
> Assignee: Stu Hood
> Fix For: 0.8.0
>
> Attachments: 0001-Move-Resolvers-to-atomic-append-count.txt,
> ResolveRaceTest.java
>
>
> When receiving a response, ReadResponseResolver uses a 3 step process to
> decide whether to trigger the condition that enough responses have arrived:
> # Add new response
> # Check response set size
> # Check that data is present
> I think that these steps must have been reordered by the compiler in some
> cases, because I was able to reproduce a case for a QUORUM read where the
> condition is not properly triggered:
> {noformat}
> INFO [RequestResponseStage:15] 2011-04-25 00:26:53,514
> ReadResponseResolver.java (line 87) post append for 1087367065: hasData=false
> in 2 messages
> INFO [RequestResponseStage:8] 2011-04-25 00:26:53,514
> ReadResponseResolver.java (line 87) post append for 1087367065: hasData=true
> in 1 messages
> INFO [pool-1-thread-54] 2011-04-25 00:27:03,516 StorageProxy.java (line 623)
> Read timeout: java.util.concurrent.TimeoutException:
> ReadResponseResolver@1087367065(/10.34.131.109=false,/10.34.132.122=true,)
> {noformat}
> The last line shows that both results were present, and that one of them was
> holding data.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira