Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.4.8, 1.5.10
-
None
Description
The class responsible for accepting new cache operations which will be handled asynchronously is CacheActionDispatcher. In case of a high load, when the queue is full (=1024 entries), the add() method removes the oldest 256 entries. However, we can't afford losing the updates (as it may result in having stale entries in the cache), so all the removed entries are compacted into one big invalidate action.
The compaction action (CacheActionDispatcher#cleanTheQueue) still holds the lock taken in add() method, so threads which tries to add something to the queue have to wait until cleanTheQueue() ends.
Maybe we can optimise the CacheActionDispatcher#add->cleanTheQueue part, so it won't hold the lock for the whole time.
Attachments
Attachments
Issue Links
- Is contained by
-
OAK-5147 Backport asynchronous queue improvements to 1.2
- Closed
- is duplicated by
-
OAK-2686 Persistent cache: log activity and timing data, and possible optimizations
- Resolved
- is related to
-
OAK-5138 NodeCache.getIfPresent() may result in writing to persistent cache
- Closed
-
OAK-5142 Make sure that metadata entries are eventually removed
- Closed
- relates to
-
OAK-2761 Persistent cache: add data in a different thread
- Closed
-
OAK-5071 Persistent cache: use the asynchronous mode by default
- Closed