[
https://issues.apache.org/jira/browse/GEODE-2727?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15947731#comment-15947731
]
Fred Krone commented on GEODE-2727:
-----------------------------------
Would be awesome to benchmark before and after results for a demo.
> optimize new 1.8 ConcurrentMap default methods on Region
> --------------------------------------------------------
>
> Key: GEODE-2727
> URL: https://issues.apache.org/jira/browse/GEODE-2727
> Project: Geode
> Issue Type: Improvement
> Components: regions
> Reporter: Darrel Schneider
>
> In JDK 1.8 ConcurrentMap added the following default methods to the interface:
> getOrDefault
> computeIfAbsent
> computeIfPresent
> compute
> merge
> foreach
> replaceAll
> All of the default implementations of these methods have issues with get
> returning null when the key actually exists. So they do not support invalid
> region entries.
> The other problem with all of them (except getOrDefault) is that they will
> make multiple round trips when done from a proxy. In a distributed
> environment we should implement these to send the lambda to the primary so
> that the entire operation can be done with one message and while the
> RegionEntry is locked.
> This would require that the lambda parameter by serializable which would be
> consistent with what we do for other parameters to Region methods (for
> example "put").
> From a performance point of view "foreach" and "replaceAll" are the worst
> since they bring back to whoever is executing the method all the keys and
> values from the entire cluster.
> It is also worth considering how the operations behave in a geode transaction.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)