Various aspects of how Segment Tar caches segments could possibly improved. The current cache is a result of replacing the former ad-hoc cache with a proper one in
OAK-3055. While the former was prone to contention under concurrent load the current cache is too oblivious about reads: read accesses are always served through SegmentId.segment and never actually hit the cache. This results in frequently accessed segments not to be seen as such by the cache and potentially being prematurely evicted.
Possibly approaches to address this problem include:
- Reinstantiating the cache we had pre
OAK-3055but making in fully concurrent.
- Convey the information about read accesses to the current cache.
- In either of the above cases avoid bulk segments from being placed into the cache.