[
https://issues.apache.org/jira/browse/OAK-6915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Dürig updated OAK-6915:
-------------------------------
Attachment: OAK-6915-05.patch
5 the version of the patch: [^OAK-6915-05.patch]. This is essentially the same
as the 4th, just that I moved the call to {{SegmentId.loaded()}} inside the
loader closure in {{SegmentCache.getSegment()}}. This doesn't change anything
in behaviour but I think it does rely less on the implementation details of the
cache and gives us stronger guarantees re. the eviction call actually happening
*after* we call loaded.
Additionally I moved updating the current cache weight statistics in
{{SegmentCache#putSegment()}} before the call to {{Cache.put()}}. This ensures
we always increment this number before we decrement it, even when
{{Cache.put()}} results in immediate eviction.
Finally I left a comment regarding the importance of properly ordering these
statements in {{SegmentCache.putSegment()}}. [~frm], [~dulceanu], can you
double check and fix the wording if necessary. The goal would be that we would
still understand what this is about in two years from now.
> Minimize the amount of uncached segment reads
> ---------------------------------------------
>
> Key: OAK-6915
> URL: https://issues.apache.org/jira/browse/OAK-6915
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: segment-tar
> Reporter: Francesco Mari
> Assignee: Francesco Mari
> Fix For: 1.8, 1.7.12
>
> Attachments: OAK-6915-01.patch, OAK-6915-02.patch, OAK-6915-03.patch,
> OAK-6915-04.patch, OAK-6915-05.patch, OAK-6915-diagnostics-02.patch,
> OAK-6915-diagnostics.patch, OAK-6915.patch, Screen Shot 2017-11-09 at
> 14.14.28.png, Screen Shot 2017-11-09 at 14.16.59.png
>
>
> The current implementation of {{SegmentCache}} should make better use of the
> underlying Guava cache by relying on the cached segments instead of
> unconditionally performing an uncached segment read via the
> {{Callable<Segment>}} passed to {{SegmentCache#getSegment}}.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)