jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dürig (JIRA) <j...@apache.org>
Subject [jira] [Resolved] (OAK-3139) SNFE in persisted comapation map when using CLEAN_OLD
Date Wed, 29 Jul 2015 07:44:04 GMT

     [ https://issues.apache.org/jira/browse/OAK-3139?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Michael Dürig resolved OAK-3139.
    Resolution: Fixed

Turns out the problem was keeping a reference to a {{SegmentWriter}} that would only rarely
be written to. As we are running with {{CLEAN_OLD}} the id of its underlying segment could
get cleaned from the {{SegmentIdTable}} after a while. Flushing the segment thereafter would
still cause it to be persisted but a subsequent cleanup run would immediately remove it again.

Fixed at http://svn.apache.org/r1693195 by using a fresh {{SegmentWriter}} instance for each
compaction round. 

> SNFE in persisted comapation map when using CLEAN_OLD
> -----------------------------------------------------
>                 Key: OAK-3139
>                 URL: https://issues.apache.org/jira/browse/OAK-3139
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: segmentmk
>            Reporter: Michael Dürig
>            Assignee: Michael Dürig
>            Priority: Critical
>              Labels: compaction, gc
>             Fix For: 1.3.4
>         Attachments: OAK-3139.patch
> When using {{CLEAN_OLD}} it might happen that segments of the persisted compaction map
get collected. --The reason for this is that only the segment containing the root of the map
is pinned ({{SegmentId#pin}}), leaving other segments of the compaction map eligible for collection
once old enough.--
> {noformat}
> org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment 95cbb3e2-3a8c-4976-ae5b-6322ff102731
not found
>         at org.apache.jackrabbit.oak.plugins.segment.file.FileStore.readSegment(FileStore.java:919)
>         at org.apache.jackrabbit.oak.plugins.segment.SegmentTracker.getSegment(SegmentTracker.java:134)
>         at org.apache.jackrabbit.oak.plugins.segment.SegmentId.getSegment(SegmentId.java:108)
>         at org.apache.jackrabbit.oak.plugins.segment.Record.getSegment(Record.java:82)
>         at org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntry(MapRecord.java:154)
>         at org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntry(MapRecord.java:186)
>         at org.apache.jackrabbit.oak.plugins.segment.PersistedCompactionMap.get(PersistedCompactionMap.java:118)
>         at org.apache.jackrabbit.oak.plugins.segment.PersistedCompactionMap.get(PersistedCompactionMap.java:100)
>         at org.apache.jackrabbit.oak.plugins.segment.CompactionMap.get(CompactionMap.java:93)
>         at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.uncompact(SegmentWriter.java:1023)
>         at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeNode(SegmentWriter.java:1033)
>         at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeBuilder.getNodeState(SegmentNodeBuilder.java:100)
>         at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.<init>(SegmentNodeStore.java:418)
>         at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore.merge(SegmentNodeStore.java:204)
> {noformat}

This message was sent by Atlassian JIRA

View raw message