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 "Michael Dürig (JIRA)" <ji...@apache.org> on 2016/09/08 12:43:20 UTC

[jira] [Commented] (OAK-4777) Use gc generation from SegmentId instead of the Segment itself

    [ https://issues.apache.org/jira/browse/OAK-4777?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15473772#comment-15473772 ] 

Michael Dürig commented on OAK-4777:
------------------------------------

+1, good catch!

Just let's add some Javadoc to the new methods. 

> Use gc generation from SegmentId instead of the Segment itself
> --------------------------------------------------------------
>
>                 Key: OAK-4777
>                 URL: https://issues.apache.org/jira/browse/OAK-4777
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: segment-tar
>            Reporter: Alex Parvulescu
>         Attachments: OAK-4777.patch
>
>
> Reading the gc generation can cause a segment to be loaded again and as we already have the gc info we need in the SegmentId, we might as well use it and possibly skip loading the entire segment if we only need this bit of info.
> relevant trace:
> {noformat}
> java.lang.Thread.State: RUNNABLE
>     at sun.nio.ch.FileChannelImpl.readInternal(FileChannelImpl.java:741)
>     at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:727)
>     at org.apache.jackrabbit.oak.segment.file.TarWriter.readEntry(TarWriter.java:216)
>     at org.apache.jackrabbit.oak.segment.file.FileStore$15.call(FileStore.java:1320)
>     at org.apache.jackrabbit.oak.segment.file.FileStore$15.call(FileStore.java:1292)
>     at org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1013)
>     at org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.get(CacheLIRS.java:974)
>     - locked <0x000000079cb9d8e8> (a java.util.concurrent.atomic.AtomicBoolean)
>     at org.apache.jackrabbit.oak.cache.CacheLIRS.get(CacheLIRS.java:285)
>     at org.apache.jackrabbit.oak.segment.SegmentCache.getSegment(SegmentCache.java:92)
>     at org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:1292)
>     at org.apache.jackrabbit.oak.segment.SegmentId.getSegment(SegmentId.java:123)
>     - locked <0x000000057cc8b7e0> (a org.apache.jackrabbit.oak.segment.SegmentId)
>     at org.apache.jackrabbit.oak.segment.RecordId.getSegment(RecordId.java:94)
>     at org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.isOldGeneration(SegmentWriter.java:1199)
>     at org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.deduplicateNode(SegmentWriter.java:1158)
>     at org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeNode(SegmentWriter.java:1006)
>     at org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeNodeUncached(SegmentWriter.java:1069)
>     at org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeNode(SegmentWriter.java:1013)
>     at org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeNode(SegmentWriter.java:987)
>     at org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.access$700(SegmentWriter.java:379)
>     at org.apache.jackrabbit.oak.segment.SegmentWriter$8.execute(SegmentWriter.java:337)
>     at org.apache.jackrabbit.oak.segment.SegmentBufferWriter.execute(SegmentBufferWriter.java:176)
>     at org.apache.jackrabbit.oak.segment.SegmentWriter.writeNode(SegmentWriter.java:334)
>     at org.apache.jackrabbit.oak.segment.Compactor$CompactDiff.childNodeAdded(Compactor.java:254)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)