As the L1 requestor is registered only after the value is retrieved from data container, the (transactional) update of the value may not invalide the entry after write and the cache gets inconsistent. Consider this interleaving of operations (G=get request from other node, C=commit) R: read value -> old value C: update old -> new C: notify requestors for key R: add requestor for key
William Burns <wburns> updated the status of jira ISPN-3737 to Coding In Progress
William Burns <wburns> made a comment on jira ISPN-3737 Good catch! Normally just putting the registration of the requestor before the get completes would have an inverse effect (we could invalidate something that isn't present), but because of the L1 rewrite to not store L1 values if a concurrent invalidation occurs while waiting on a remote get, that should be a more than feasible fix.
William Burns <wburns> made a comment on jira ISPN-3737 Also this only affects RepeatableRead since Read Committed would return the correct value and thus would have cached the proper value. I will have to add in some Repeatable Read unit tests.
Radim Vansa <rvansa> made a comment on jira ISPN-3737 I have experienced that with RC. But you can check out as soon as you get the unit test reproducing this with RR.
This product has been discontinued or is no longer tracked in Red Hat Bugzilla.