Avoid eviction on entry replacement #204
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
*Result
objects are immutable, thus if aPartialResult
gets filled further it has to be re-set into the cache.This does not change the cache size, but because the current S3 and SIEVE implementations unconditionally check the cache size on
__setitem__
they may evict an entry unnecessarily.Fix that: if there is already a valid cache entry for the key, just update it in place instead of trying to evict then creating a brand new entry.
Also update the LRU to pre-check for size (and presence as well), this may make setting a bit more expensive than post-check but it avoids "wronging" the user by bypassing the limit they set.
Fixes #201