You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Andrei Dulceanu (JIRA)" <ji...@apache.org> on 2016/08/01 13:29:20 UTC
[jira] [Comment Edited] (OAK-4579) Improve FileStore.size
calculation
[ https://issues.apache.org/jira/browse/OAK-4579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15401954#comment-15401954 ]
Andrei Dulceanu edited comment on OAK-4579 at 8/1/16 1:28 PM:
--------------------------------------------------------------
There were some issues regarding step 2 with four 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]
was (Author: dulceanu):
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)