ben-manes/caffeine
22 days ago

Cache

  • Fixed clear() removing a key more than once due to a write-back removal listener (#872)

JCache

  • Added support for loading the configuration from the cache manager's uri (#877)
2023-02-20 08:41:10

Add @CanIgnoreReturnValue annotations for static analysis (#868)

2023-02-10 15:07:15

Cache

  • Fixed the build time dependency constraints from being leaked into the external metadata (#867)
  • Fixed the behavior for null lookups to into returned unmodifiable maps to be consistent (#864)
  • Fixed the cause of a removal notification for a discarded refresh when the entry was removed
  • Fixed an unexpected delay of removal notifications when using a scheduler (#859)
  • Fixed explicit refreshes from being deduped if the entry is pending eviction
  • Defaulted methods to @CheckReturnValue for static analysis (#863)
  • Reduced the lock hold time during Map.clear (#835)

JCache

  • Fixed putAll with an immutable map that causes an exception when using a cache writer (#841)
2022-11-24 03:52:53

Cache

  • Added detection when a key's equality changes and causes the underlying map to become corrupted (SOLR-16489)
  • Improved the frequency sketch by reducing memory accessing by better utilizing the cpu cache line
  • Fixed computeIfAbsent when replacing a collected weak/soft value and the custom expiry fails
  • Improved refresh conflict detection to avoid unnecessarily discarding after a reload
  • Improved eviction when the weight is oversized (#745)

Guava

  • Added an adapter from Guava's CacheLoader to Caffeine's (#766)

JCache

  • Fixed Cache.getConfiguration() to return an immutable instance
2022-05-27 00:50:56
  • Fixed refreshAfterWrite when racing with a removed entry (#715)
  • Fixed gradle module metadata variant selection (#716)
2022-04-28 07:02:44
  • Fixed the publication of a removal notification when computing a null value on top of an expired entry
  • Fixed the publication of a removal notification for a conditional replacement on an unbounded cache
  • Fixed Map.equals when the traversal triggers an eviction and the subset of live entries matches
  • Improved refreshAfterWrite to return the new value if computed by the caller (#688, #699)
  • Added Interner for weak keyed equality caching (#344)
2022-03-15 15:12:41
  • Fixed AsyncCache.getAll when storing additional mappings (#655)
  • Added the ability to specify the expiration time with the computation
  • Added a warning if writes stall due to blocked eviction (#672)
  • Added advanced query support for obtaining entry metadata
2021-12-03 07:29:43

Cache

  • Fixed reference eviction when used with a broken executor (JDK-8274349)
  • Suppressed log warnings if a future is cancelled or times out (#597)
  • Removed @Nullable from LoadingCache.get(key) (#594)
  • Fixed early expiration of in-flight async loads (#625)

JCache

  • close() will now shutdown the executor and wait for in-flight loads to finish
2021-12-02 17:04:44

Cache

  • Fixed reference eviction when used with a broken executor (JDK-8274349)
  • Reduced the entry overhead by 8 bytes when using weak or soft values
  • Suppressed log warnings if a future is cancelled or times out (#597)
  • Fixed Map.entrySet.contains(o) to use reference equality
  • Fixed early expiration of in-flight async loads (#625)

JCache

  • close() will now shutdown the executor and wait for in-flight loads to finish
2021-09-13 11:46:23

Cache

  • Fixed cases that incorrectly notified the removal listener for no-op replacements (#593)
  • Improved how refreshAfterWrite is triggered on a read to avoid hotspots
  • Added the ability to capture coldest & hottest weighted snapshots
  • Reduced the per-entry overhead when using weak/soft values
  • Fixed Map.entrySet.contains(o) to use reference equality