8

I'd like to implement the following algorythm above Ehcache :

  • try to get an element from the cache
  • if the element is not expired
    • serve the value
  • else
    • serve the expired value
    • refresh the element in the background

But I never get an expired element (Element.isExpired()). I tried to play with my cache configuration (especially TimeToLive and TimeToIdle) but I cant seem to get it to work as I want. I can list the keys in the cache, but if I "get()" an expired element, I always get a null.

What am I doing wrong ?

Guillaume
  • 18,494
  • 8
  • 53
  • 74

1 Answers1

4

You're not doing anything wrong. The documentation says that getting an expired element will remove it from the cache and return null.

I suspect the only time an element will come up as expired is if you have an event listener listenings for element expiry events but I can't say I've ever tested this.

cletus
  • 616,129
  • 168
  • 910
  • 942
  • Pay attention with the event listener (notifyElementExpiry). Only the key of the element is kown. According to following sentence in the API: As the Element has been expired, only what was the key of the element is known. Just had trouble with this. – schoeggii Nov 01 '12 at 16:25