-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: 4.4.0-rc3
-
Component/s: Internal Code
-
Labels:None
-
Fully Compatible
-
ALL
-
v4.4
-
Sharding 2020-05-18
The destructor of InvalidatingLRUCache::StoredValue unconditionally removes entries from the _evictedCheckedOutValues map. This means it is possible that an old ValueHandle, which goes out of scope after a newer value for the same key has been evicted, will remove the newer value from that map. This in turn will prevent such a value from getting invalidated.
The solution is to only erase from the _evictedCheckedOutValues if the StoredValue corresponds to the same epoch for the key.