[ 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)