[ 
https://issues.apache.org/jira/browse/OFBIZ-6747?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16508717#comment-16508717
 ] 

Taher Alkhateeb commented on OFBIZ-6747:
----------------------------------------

Thank you Ben, this is indeed quite informative.

So I see two places where the specific implementation is used explicitly in the 
code:
 * org.apache.ofbiz.service.ServiceDispatcher:
{code:java}
protected static final Map<RunningService, ServiceDispatcher> runLog = new 
ConcurrentLinkedHashMap.Builder<RunningService, 
ServiceDispatcher>().maximumWeightedCapacity(lruLogSize).build();
{code}

 * org.apache.ofbiz.base.util.cache.UtilCache
{code:java}
    public void setMaxInMemory(int newInMemory) {
        this.maxInMemory = newInMemory;
        Map<Object, CacheLine<V>> oldmap = this.memoryTable;

        if (newInMemory > 0) {
            if (this.memoryTable instanceof ConcurrentLinkedHashMap<?, ?>) {
                ((ConcurrentLinkedHashMap<?, ?>) 
this.memoryTable).setCapacity(newInMemory);
                return;
            }
            this.memoryTable =new Builder<Object, CacheLine<V>>()
                    .maximumWeightedCapacity(newInMemory)
                    .build();
        } else {
            this.memoryTable = new ConcurrentHashMap<>();
        }

        this.memoryTable.putAll(oldmap);
    }
{code}

So the question on my mind is, what is the simplest way to switch out. I guess 
we need to replace the builder logic along with the other specific methods that 
are being called.

> Replace ConcurrentLinkedHashMap by Caffeine
> -------------------------------------------
>
>                 Key: OFBIZ-6747
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-6747
>             Project: OFBiz
>          Issue Type: Task
>            Reporter: Ben Manes
>            Assignee: Jacques Le Roux
>            Priority: Minor
>
> Similar to OFBIZ-3779, please consider upgrading the library used by 
> [UtilCache|https://github.com/apache/ofbiz/blob/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java]
>  (v1.2). The current version is 1.4.2 and is the last major release planned.
> The preferable alternative would be to upgrade to 
> [Caffeine|https://github.com/ben-manes/caffeine]. This is a Java 8 rewrite 
> based on what I've learned since developing CLHM and Guava's cache. As 
> expected it provides [superior 
> performance|https://github.com/ben-manes/caffeine/wiki/Benchmarks]. It also 
> provides a [near 
> optimal|https://github.com/ben-manes/caffeine/wiki/Efficiency] eviction 
> policy.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to