diff --git a/core/src/main/java/org/dcache/utils/Cache.java b/core/src/main/java/org/dcache/utils/Cache.java index 228ce4435..b63ff72fd 100644 --- a/core/src/main/java/org/dcache/utils/Cache.java +++ b/core/src/main/java/org/dcache/utils/Cache.java @@ -57,36 +57,6 @@ public class Cache { private static final Logger _log = LoggerFactory.getLogger(Cache.class); private final Clock _timeSource; - /** - * Check and remove expired entries. - */ - public void cleanUp() { - List expiredEntries = new ArrayList<>(); - - _accessLock.lock(); - try { - long now = System.currentTimeMillis(); - Iterator>> entries = _storage.entrySet().iterator(); - while(entries.hasNext()) { - Map.Entry> entry = entries.next(); - CacheElement cacheElement = entry.getValue(); - - if (!cacheElement.validAt(now)) { - _log.debug("Cleaning expired entry key = [{}], value = [{}]", - entry.getKey(), cacheElement.getObject()); - entries.remove(); - expiredEntries.add(cacheElement.getObject()); - } - } - _lastClean.set(now); - } finally { - _accessLock.unlock(); - } - for (V v : expiredEntries) { - _eventListener.notifyExpired(this, v); - } - } - /** * The name of this cache. */ @@ -354,6 +324,35 @@ public void clear() { } } + /** + * Check and remove expired entries. + */ + public void cleanUp() { + List expiredEntries = new ArrayList<>(); + + _accessLock.lock(); + try { + long now = System.currentTimeMillis(); + Iterator>> entries = _storage.entrySet().iterator(); + while (entries.hasNext()) { + Map.Entry> entry = entries.next(); + CacheElement cacheElement = entry.getValue(); + + if (!cacheElement.validAt(now)) { + _log.debug("Cleaning expired entry key = [{}], value = [{}]", + entry.getKey(), cacheElement.getObject()); + entries.remove(); + expiredEntries.add(cacheElement.getObject()); + } + } + _lastClean.set(now); + } finally { + _accessLock.unlock(); + } + + expiredEntries.forEach( v -> _eventListener.notifyExpired(this, v)); + } + /** * Get {@link List} of entries. * @return list of entries.