We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Given a cache with an CreatedExpiryPolicy, read-through enabled and with a cache loader. Cache is always just accessed via get(K key) method.
CreatedExpiryPolicy
get(K key)
Initially cache accesses work fine.
As soon as the cache item has expired the following happens once (in Cache$Default#getValue):
Cache$Default#getValue
loadCacheEntry
expiryForCreation
value
Why is this? I see this was introduced by #369, which unfortunately has no (or just private) description.
Subsequent calls to get work fine again, since the old entry was removed and hence next call will just establish a new one.
Given the following cache configuration
final MutableConfiguration<String, Object> configuration = new MutableConfiguration<>(); configuration.setReadThrough(true); configuration.setCacheLoaderFactory(new FactoryBuilder.SingletonFactory<>(new SomeCustomCacheLoader())); configuration.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.ONE_DAY)); configuration.setStoreByValue(false);
Then get("whatever")... wait for the expiry period to have passed ... then get("whatever") again.
get("whatever")
Should return the actual value from the loader.
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Environment Details
Describe the bug
Given a cache with an
CreatedExpiryPolicy
, read-through enabled and with a cache loader.Cache is always just accessed via
get(K key)
method.Initially cache accesses work fine.
As soon as the cache item has expired the following happens once (in
Cache$Default#getValue
):loadCacheEntry
is called to provide a new value ✅expiryForCreation
is calculated based on the old item's creation time, hence it immediately is expired again ❓value
(returned from the loader) is then overriden to null ❓Why is this? I see this was introduced by #369, which unfortunately has no (or just private) description.
Subsequent calls to get work fine again, since the old entry was removed and hence next call will just establish a new one.
To Reproduce
Given the following cache configuration
Then
get("whatever")
... wait for the expiry period to have passed ... thenget("whatever")
again.Expected behavior
Should return the actual value from the loader.
The text was updated successfully, but these errors were encountered: