[
https://issues.apache.org/jira/browse/IGNITE-3471?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15487923#comment-15487923
]
Nikolay Tikhonov edited comment on IGNITE-3471 at 9/13/16 6:09 PM:
-------------------------------------------------------------------
Implementing that entry processor is invoked only on owner nodes. In this case
new value will be kept on primary node and will be sent to originating node, if
get method was explicitly called.
was (Author: ntikhonov):
Implementing that entry processor is invoked only on owner nodes. In cases when
entry processor doesn't modify then an entry value will not be sent to
originating node.
> Do not send previous value to client node for invoke() when possible
> --------------------------------------------------------------------
>
> Key: IGNITE-3471
> URL: https://issues.apache.org/jira/browse/IGNITE-3471
> Project: Ignite
> Issue Type: Task
> Components: cache
> Affects Versions: 1.4
> Reporter: Alexey Goncharuk
> Assignee: Nikolay Tikhonov
> Attachments: CacheEntryProcessorTxSelfTest.java
>
>
> Currently for invoke() or invokeAll() methods we send previous cache value to
> near node and apply EntryProcessor locally to get a return value. This can
> induce a significant overhead when cache value is much larger than entry
> processor result.
> For many cases this can be avoided, e.g.
> {code}
> try (tx = txStart()) {
> cache.invoke(key, EP); // No need to send previous value to client in
> this case.
> tx.commit();
> }
> {code}
> Note that we need to add additional handling of such a case:
> {code}
> try (tx = txStart()) {
> cache.invoke(key, EP); // No need to send previous value to client in
> this case.
> cache.get(key); // This should actually get the current cache value from
> primary node and apply an entry processor locally to get the updated value.
> tx.commit();
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)