[
https://issues.apache.org/jira/browse/OAK-4579?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrei Dulceanu updated OAK-4579:
---------------------------------
Attachment: OAK-4579-01.patch
There were some issues regarding step 2 with three test classes which needed
{{FileStore::size}}, therefore I had to tweak {{FileStore}} creation by adding
{{.withStatisticsProvider(new DefaultStatisticsProvider(executor))}} and use
{{fileStore.getStats().getApproximateSize()}} instead of {{fileStore.size()}}.
All tests successful pass after the change was made.
[~mduerig] Can you please take a look at the attached patch?
/cc [~frm]
> Improve FileStore.size calculation
> ----------------------------------
>
> Key: OAK-4579
> URL: https://issues.apache.org/jira/browse/OAK-4579
> Project: Jackrabbit Oak
> Issue Type: Task
> Components: segment-tar
> Reporter: Andrei Dulceanu
> Assignee: Andrei Dulceanu
> Priority: Minor
> Labels: resilience
> Fix For: Segment Tar 1.0.0
>
> Attachments: OAK-4579-01.patch
>
>
> A new approach for calculating {{FileStore::size}} is needed because this
> method is prone to lock contention and should not be called too often.
> The steps to implement the approach are:
> # reduce the lock surface of the size() method. This should be simple enough
> by creating a copy of the readers / writer inside the lock and do the actual
> size calculation on that snapshot but outside of the lock.
> # lower size() visibility to package to avoid misuse (from monitoring tools)
> # remove {{approximateSize}} and associated logic and replace it with
> {{size()}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)