+1

managedLedgerCacheEvictionIntervalMs is easier to understand.

> What's more, the evict task is executed once, and then sleep waitTimeMillis
> before the next round, we can use a ScheduledExecutorService to replace it.

+1, Currently it works like scheduleAtFixDelay, but I think we may need 
scheduleAtFixRate.


Thanks,
Haiting

On 2022/03/16 01:09:47 Aloys Zhang wrote:
> Hi all,
> 
> Pulsar uses an EntryCache to support entry caching for tailing-read. and
> there is a periodic task to evict entry from the cache.
> 
> The task period is calculated by
> 
>   double evictionFrequency =
> Math.max(Math.min(config.getCacheEvictionFrequency(), 1000.0), 0.001);
>   long waitTimeMillis = (long) (1000 / evictionFrequency);
> 
> First, we should set a evictionFrequency which means how many times evict
> task will be executed per second.
> 
> Then, get the waitTimeMillis (task interval in milliseconds) by 1000 /
> evictionFrequency.
> 
> It's a little complicated and confusing, what we need is just the evict
> task interval, I didn't see the benefits of evictionFrequency .
> 
> So I think it's better to set the evict task interval (maybe called
> managedLedgerCacheEvictionIntervalMs) directly and deprecate the
> evictionFrequency.
> 
> For compatibility
> 
>    -
> 
>    if only evictionFrequency is configed, keep using current logic
>    -
> 
>    if boty evictionFrequency and managedLedgerCacheEvictionIntervalMs are
>    configed, managedLedgerCacheEvictionIntervalMs is aprior choice
>    -
> 
>    if only managedLedgerCacheEvictionIntervalMs appears, use the
>    managedLedgerCacheEvictionIntervalMs
> 
> What's more, the evict task is executed once, and then sleep waitTimeMillis
> before the next round, we can use a ScheduledExecutorService to replace it.
> 
> 
> Any suggestions are appreciated.
> 
> 
> Thanks,
> 
> Aloys
> 

Reply via email to