[
https://issues.apache.org/jira/browse/IGNITE-2645?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15144652#comment-15144652
]
Alexey Goncharuk commented on IGNITE-2645:
------------------------------------------
I think we can pass the generated update version to innerGet(), so that this
version is used for read-through. If read-through happened on innerGet(), but
entry processor did not change the value, we still need to propagate the
updated value to backups.
> Assertion error in ATOMIC cachce for invokeAll and cache store
> --------------------------------------------------------------
>
> Key: IGNITE-2645
> URL: https://issues.apache.org/jira/browse/IGNITE-2645
> Project: Ignite
> Issue Type: Bug
> Components: cache
> Affects Versions: ignite-1.4
> Reporter: Alexey Goncharuk
> Attachments: EntryProcessorFails.java
>
>
> Assertion happens under the following conditions:
> * Cache is empty
> * Cache store contains non-null values for some keys
> * invokeAll is invoked for those keys
> Update version is generated when update request reaches the primary node.
> Then, we need to read-through stored values (the cache is empty) and pass
> them to transformers. Since read-through changes entry version, subsequent
> update fails with an assertion because read-through version is generated
> later than update version.
> The scenario when a read-through is implemented via a separate loop with
> innerGet() is possible only with invokeAll() because this is the only
> multi-key cache operation that requires the previous entry value.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)