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

Miroslav Smiljanic reassigned OAK-10814:
----------------------------------------

    Assignee: Miroslav Smiljanic

> Tar file recovery still fails with SNFE in some cases.
> ------------------------------------------------------
>
>                 Key: OAK-10814
>                 URL: https://issues.apache.org/jira/browse/OAK-10814
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: segment-tar
>    Affects Versions: 1.62.0
>            Reporter: Axel Hanikel
>            Assignee: Miroslav Smiljanic
>            Priority: Major
>
> {noformat}
> 13.05.2024 06:59:56.357       WARN    [FelixStartLevel] 
> org.apache.jackrabbit.oak.segment.file.tar.SegmentTarReader Unable to load 
> index of file data21604a.tar: Unrecognized magic number
> 13.05.2024 06:59:56.369       INFO    [FelixStartLevel] 
> org.apache.jackrabbit.oak.segment.file.tar.TarReader Backing up 
> data21604a.tar to data21604a.tar.bak
> 13.05.2024 06:59:56.372       INFO    [FelixStartLevel] 
> org.apache.jackrabbit.oak.segment.file.tar.TarReader Regenerating tar file 
> data21604a.tar
> 13.05.2024 06:59:56.439       ERROR   [FelixStartLevel] 
> org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener Segment 
> not found: a4ad6e4b-93dc-4e09-ad0d-ab99a7f93652. SegmentId age=18ms
> org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 
> a4ad6e4b-93dc-4e09-ad0d-ab99a7f93652 not found
>       at 
> org.apache.jackrabbit.oak.segment.file.AbstractFileStore.readSegmentUncached(AbstractFileStore.java:297)
>  [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.file.FileStore.lambda$readSegment$10(FileStore.java:512)
>  [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.SegmentCache$NonEmptyCache.lambda$getSegment$0(SegmentCache.java:163)
>  [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.guava.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4938)
>  [org.apache.jackrabbit.guava:1.62.0]
>       at 
> org.apache.jackrabbit.guava.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3576)
>  [org.apache.jackrabbit.guava:1.62.0]
>       at 
> org.apache.jackrabbit.guava.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2318)
>  [org.apache.jackrabbit.guava:1.62.0]
>       at 
> org.apache.jackrabbit.guava.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2191)
>  [org.apache.jackrabbit.guava:1.62.0]
>       at 
> org.apache.jackrabbit.guava.common.cache.LocalCache$Segment.get(LocalCache.java:2081)
>  [org.apache.jackrabbit.guava:1.62.0]
>       at 
> org.apache.jackrabbit.guava.common.cache.LocalCache.get(LocalCache.java:4019) 
> [org.apache.jackrabbit.guava:1.62.0]
>       at 
> org.apache.jackrabbit.guava.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4933)
>  [org.apache.jackrabbit.guava:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.SegmentCache$NonEmptyCache.getSegment(SegmentCache.java:160)
>  [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:512)
>  [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.SegmentId.getSegment(SegmentId.java:153) 
> [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at org.apache.jackrabbit.oak.segment.Record.getSegment(Record.java:71) 
> [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.ListRecord.getEntries(ListRecord.java:99) 
> [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.ListRecord.getEntries(ListRecord.java:92) 
> [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.SegmentStream.read(SegmentStream.java:166) 
> [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.guava.common.io.ByteStreams.read(ByteStreams.java:934) 
> [org.apache.jackrabbit.guava:1.62.0]
>       at 
> org.apache.jackrabbit.guava.common.io.ByteStreams.readFully(ByteStreams.java:802)
>  [org.apache.jackrabbit.guava:1.62.0]
>       at 
> org.apache.jackrabbit.guava.common.io.ByteStreams.readFully(ByteStreams.java:786)
>  [org.apache.jackrabbit.guava:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.SegmentStream.getString(SegmentStream.java:105)
>  [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.Segment.readString(Segment.java:467) 
> [org.apache.jackrabbit.oak-segment-tar:1.62.0]
>       at 
> org.apache.jackrabbit.oak.segment.SegmentBlob.readLongBlobId(SegmentBlob.java:248)
>  [org.apache.jackrabbit.oak-segment-tar:1.62.0]
> {noformat}
> The reason seems to be that the long blobId string is stored behind a list 
> record, where the elements are stored in yet a different segment, which is 
> then loaded in the normal way, i.e. bypassing the recovery map added in 
> OAK-10636.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to