[ 
https://issues.apache.org/jira/browse/OAK-12186?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rishabh Daim resolved OAK-12186.
--------------------------------
    Fix Version/s: 2.2.0
       Resolution: Won't Fix

> CacheFactory wiring and CacheBuilder decoupling [oak-core-spi]
> --------------------------------------------------------------
>
>                 Key: OAK-12186
>                 URL: https://issues.apache.org/jira/browse/OAK-12186
>             Project: Jackrabbit Oak
>          Issue Type: Technical task
>            Reporter: Rishabh Daim
>            Assignee: Rishabh Daim
>            Priority: Major
>             Fix For: 2.2.0
>
>
> {color:#871094}CacheFactory wiring and CacheBuilder decoupling [oak-core-spi] 
> — part of [OAK-12148](https://issues.apache.org/jira/browse/OAK-12148)
> {color}{color:#871094}
> {color}{color:#0033b3}**{color}Depends on:{color:#0033b3}** {color}TASK-1.1 
> (CacheFactory interface), OAK-12148 (TASK-2)
> {color:#0033b3}**{color}Independent of:{color:#0033b3}** {color}TASK-3 
> through TASK-14 (those tasks depend on OAK-12148, not on this)
> {color:#0033b3}### {color}What changes
> {color:#0033b3}- 
> `{color}oak-core-spi/.../cache/api/CacheBuilder.java{color:#0033b3}` {color}— 
> update {color:#0033b3}`{color}build(){color:#0033b3}` {color}and 
> {color:#0033b3}`{color}build(CacheLoader){color:#0033b3}` {color}to delegate 
> to {color:#0033b3}`{color}CacheFactory.getInstance(){color:#0033b3}` 
> {color}instead of directly instantiating 
> {color:#0033b3}`{color}CaffeineCacheAdapter{color:#0033b3}`{color}; remove 
> imports of 
> {color:#0033b3}`{color}com.github.benmanes.caffeine.cache.Caffeine{color:#0033b3}`{color},
>  {color:#0033b3}`{color}CaffeineCacheAdapter{color:#0033b3}`{color}, 
> {color:#0033b3}`{color}CaffeineLoadingCacheAdapter{color:#0033b3}`{color}; 
> remove private methods {color:#0033b3}`{color}buildCaffeine(){color:#0033b3}` 
> {color}and 
> {color:#0033b3}`{color}configureCaffeineBuilder(){color:#0033b3}`{color}; add 
> public getters for all 10 config fields so 
> {color:#0033b3}`{color}CaffeineCacheFactory{color:#0033b3}` {color}can read 
> them: {color:#0033b3}`{color}getMaximumWeight(){color:#0033b3}`{color}, 
> {color:#0033b3}`{color}getMaximumSize(){color:#0033b3}`{color}, 
> {color:#0033b3}`{color}getInitialCapacity(){color:#0033b3}`{color}, 
> {color:#0033b3}`{color}getWeigher(){color:#0033b3}`{color}, 
> {color:#0033b3}`{color}getEvictionListener(){color:#0033b3}`{color}, 
> {color:#0033b3}`{color}isRecordStats(){color:#0033b3}`{color}, 
> {color:#0033b3}`{color}getExpireAfterAccess(){color:#0033b3}`{color}, 
> {color:#0033b3}`{color}getExpireAfterWrite(){color:#0033b3}`{color}, 
> {color:#0033b3}`{color}getRefreshAfterWrite(){color:#0033b3}`{color}, 
> {color:#0033b3}`{color}getTicker(){color:#0033b3}`
> {color}{color:#0033b3}
> {color}{color:#0033b3}- 
> `{color}oak-core-spi/.../cache/impl/caffeine/CaffeineCacheFactory.java{color:#0033b3}`
>  {color}— {color:#0033b3}**{color}new{color:#0033b3}** {color}class 
> implementing {color:#0033b3}`{color}CacheFactory{color:#0033b3}`{color}; 
> contains all Caffeine wiring extracted from the deleted 
> {color:#0033b3}`{color}CacheBuilder{color:#0033b3}` {color}methods (reads 
> config via the new getters, calls 
> {color:#0033b3}`{color}Caffeine.newBuilder(){color:#0033b3}`{color}, applies 
> weigher / eviction listener / expiry / ticker, wraps result in 
> {color:#0033b3}`{color}CaffeineCacheAdapter{color:#0033b3}` {color}/ 
> {color:#0033b3}`{color}CaffeineLoadingCacheAdapter{color:#0033b3}`{color})
> {color:#0033b3}- 
> `{color}oak-core-spi/src/main/resources/META-INF/services/org.apache.jackrabbit.oak.cache.api.CacheFactory{color:#0033b3}`
>  {color}— {color:#0033b3}**{color}new{color:#0033b3}** {color}ServiceLoader 
> registration: 
> {color:#0033b3}`{color}org.apache.jackrabbit.oak.cache.impl.caffeine.CaffeineCacheFactory{color:#0033b3}`
> {color}{color:#0033b3}
> {color}{color:#0033b3}### {color}Acceptance criteria
> {color:#0033b3}- `{color}CacheBuilder{color:#0033b3}` {color}has zero imports 
> from {color:#0033b3}`{color}com.github.benmanes.caffeine{color:#0033b3}` 
> {color}or 
> {color:#0033b3}`{color}org.apache.jackrabbit.oak.cache.impl{color:#0033b3}`
> {color}{color:#0033b3}- {color}All existing 
> {color:#0033b3}`{color}CacheBuilderTest{color:#0033b3}` {color}tests pass 
> unchanged (callers are unaffected)
> {color:#0033b3}- {color}New 
> {color:#0033b3}`{color}CacheFactoryTest{color:#0033b3}`{color}: 
> {color:#0033b3}`{color}CacheFactory.getInstance(){color:#0033b3}` 
> {color}returns a non-null 
> {color:#0033b3}`{color}CaffeineCacheFactory{color:#0033b3}` {color}via 
> {color:#0033b3}`{color}ServiceLoader{color:#0033b3}`
> {color}{color:#0033b3}- {color}New 
> {color:#0033b3}`{color}CaffeineCacheFactoryTest{color:#0033b3}`{color}: 
> {color:#0033b3}`{color}build(config){color:#0033b3}` {color}and 
> {color:#0033b3}`{color}build(config, loader){color:#0033b3}` {color}with all 
> config combinations (maximumSize, maximumWeight+weigher, expiry, 
> evictionListener, ticker, recordStats)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to