geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fred Krone (JIRA)" <>
Subject [jira] [Commented] (GEODE-2727) optimize new 1.8 ConcurrentMap default methods on Region
Date Thu, 21 Sep 2017 16:22:01 GMT


Fred Krone commented on GEODE-2727:

[~dschneider] we should pick this up again

> optimize new 1.8 ConcurrentMap default methods on Region
> --------------------------------------------------------
>                 Key: GEODE-2727
>                 URL:
>             Project: Geode
>          Issue Type: Improvement
>          Components: regions
>            Reporter: Darrel Schneider
>              Labels: region_interface, storage_2
> FRED: I can now edit this!
> 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

View raw message