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