Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Currently the BlockCache interface has functions to get and put. Accumulo will try to get a block, if it does not exist load it, and then put it in the cache. This can lead to race conditions where multiple threads unnecessarily load the same block.
I think it would be better to modify the block cache interface to only have a function like the following.
CacheEntry get(String blockName, BlockLoader loader)
BlockLoader represents a function that the cache can call if a block is not present. The cache implementation can attempt to handle load race conditions however it likes..
Attachments
Issue Links
- duplicates
-
ACCUMULO-4462 Refactor cache code to avoid dog piliing
- Resolved
- links to