> > 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. Currently, the eviction interval is controlled by `Thread.sleep()` ```java doCacheEviction(); Thread.sleep(waitTimeMillis); ``` Aloys Zhang <aloyszh...@apache.org> 于2022年3月18日周五 21:44写道: > Hi penghui, > > The new configuration should be compatible with the existing one. >> > > Agree that the compatible should be concerned. And the compatibility > strategery has been posted in the first email. > > 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 do you think about this? > > > Haiting Jiang <jianghait...@apache.org> 于2022年3月17日周四 15:31写道: > >> +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 >> > >> >