jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Francesco Mari (JIRA)" <j...@apache.org>
Subject [jira] [Created] (OAK-4088) CacheLIRS prevents cleanup from being effective
Date Thu, 03 Mar 2016 18:15:18 GMT
Francesco Mari created OAK-4088:

             Summary: CacheLIRS prevents cleanup from being effective
                 Key: OAK-4088
                 URL: https://issues.apache.org/jira/browse/OAK-4088
             Project: Jackrabbit Oak
          Issue Type: Bug
          Components: core, segmentmk, tarmk-standby
            Reporter: Francesco Mari
             Fix For: 1.6

While performing some tests on compaction in the context of the cold standby, I spotted an
issue involving {{CacheLIRS}} and the {{SegmentTracker}}.

Cleanup on the standby store is inefficient due to many references to {{SegmentId}} instances.
These references prevent the system to identify unused segments, thus making the cleanup process
less effective. To minimise the amount of references to {{SegmentId}} instances, the current
implementation of the cleanup process forces every cache to be invalidated, including {{CacheLIRS}}.
Unluckily, even if {{CacheLIRS}} is invalidated, heap dumps show a lot of references to {{SegmentId}}
instances held by {{CacheLIRS}} and its inner classes. 

To verify my hypothesis, I tried to run the system with an implementation of the {{SegmentTracker}}
that doesn't populate {{CacheLIRS}} - the cache is always empty. This greatly improved the
effectiveness of compaction, to the point that the standby instance is able to cleanup almost
the whole amount of unused segments.

It should be investigated if this behaviour is caused by a bug in {{CacheLIRS}} or by an incorrect
usage of {{CacheLIRS}} by the {{SegmentTracker}}.

This message was sent by Atlassian JIRA

View raw message