What's changed
- Eagerly purge deleted items from internal
ConcurrentLru
queues. Previously, deleted items remain in the internal queues until fully cycled out of cold. Instead, purge them as items transition from queue to queue (e.g. from hot to warm) as part of cycle. - Fix
UnobservedTaskException
for value creation when usingAsAsyncCache()
/AsyncAtomicFactory
/ScopedAsyncAtomicFactory
. If there is an exception when invoking the value factory delegate, the internalTaskCompletionSource
has an exception set that previously was not observed unless another thread concurrently evaluated the result. Fixed by @advdotnet. - In
ConcurrentLru.Trim()
avoid incorrectly trimming an extra warm item when values are trimmed from cold but not warm. ConcurrentLru.TrimExpired()
is now thread safe.- Minor code cleanups by @Joy-less.
Full changelog: v2.5.3...v2.5.4