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