Subject: Segment Store Corruption Issues with Apache Oak

Dear Apache Oak Community,

We are experiencing various issues with the corruption of the Segment
Store using different versions of Apache Oak (from 1.66 to 1.72), and
we are unable to determine the cause. Please find the stack-trace at
the end of this message. We are using SegmentNodeStore and
FileDataStore with Java 21 and the latest version of Quarkus.

Are you aware of any bugs or discouraged installation scenarios that
could lead to segment store corruption?

Any insights or suggestions would be greatly appreciated.

Best regards,

Marco

2024-12-18 14:41:04,639 c-bpc-050038e quarkus-run.jar[2636470] ERROR
[org.apa.jac.oak.seg.SegmentNotFoundExceptionListener] (main) Segment
not found: 22356ab4-4e25-4ba6-a49d-8d75ea17fde9. SegmentId age=35ms:
org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment
22356ab4-4e25-4ba6-a49d-8d75ea17fde9 not found
    at 
org.apache.jackrabbit.oak.segment.file.AbstractFileStore.readSegmentUncached(AbstractFileStore.java:297)
    at 
org.apache.jackrabbit.oak.segment.file.FileStore.lambda$readSegment$10(FileStore.java:512)
    at 
org.apache.jackrabbit.oak.segment.SegmentCache$NonEmptyCache.lambda$getSegment$0(SegmentCache.java:163)
    at 
org.apache.jackrabbit.guava.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4938)
    at 
org.apache.jackrabbit.guava.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3576)
    at 
org.apache.jackrabbit.guava.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2318)
    at 
org.apache.jackrabbit.guava.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2191)
    at 
org.apache.jackrabbit.guava.common.cache.LocalCache$Segment.get(LocalCache.java:2081)
    at 
org.apache.jackrabbit.guava.common.cache.LocalCache.get(LocalCache.java:4019)
    at 
org.apache.jackrabbit.guava.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4933)
    at 
org.apache.jackrabbit.oak.segment.SegmentCache$NonEmptyCache.getSegment(SegmentCache.java:160)
    at 
org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:512)
    at 
org.apache.jackrabbit.oak.segment.SegmentId.getSegment(SegmentId.java:153)
    at 
org.apache.jackrabbit.oak.segment.CachingSegmentReader$2.apply(CachingSegmentReader.java:129)
    at 
org.apache.jackrabbit.oak.segment.CachingSegmentReader$2.apply(CachingSegmentReader.java:125)
    at org.apache.jackrabbit.oak.segment.ReaderCache.get(ReaderCache.java:117)
    at 
org.apache.jackrabbit.oak.segment.CachingSegmentReader.readTemplate(CachingSegmentReader.java:125)
    at 
org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126)
    at 
org.apache.jackrabbit.oak.segment.SegmentNodeState.getProperties(SegmentNodeState.java:254)
    at 
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.compareAgainstBaseState(EmptyNodeState.java:136)
    at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeDeleted(EditorDiff.java:170)
    at 
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.compareAgainstBaseState(EmptyNodeState.java:142)
    at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeDeleted(EditorDiff.java:170)
    at 
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.compareAgainstBaseState(EmptyNodeState.java:142)
    at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeDeleted(EditorDiff.java:170)
    at 
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.compareAgainstBaseState(EmptyNodeState.java:142)
    at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeDeleted(EditorDiff.java:170)
    at 
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.compareAgainstBaseState(EmptyNodeState.java:142)
    at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeDeleted(EditorDiff.java:170)
    at 
org.apache.jackrabbit.oak.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:582)
    at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:147)
    at org.apache.jackrabbit.oak.segment.MapRecord.compare(MapRecord.java:444)
    at 
org.apache.jackrabbit.oak.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:651)
    at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:147)
    at org.apache.jackrabbit.oak.segment.MapRecord.compare(MapRecord.java:444)
    at 
org.apache.jackrabbit.oak.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:651)
    at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:51)
    at 
org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:54)
    at 
org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:60)
    at 
org.apache.jackrabbit.oak.plugins.version.VersionHook.processCommit(VersionHook.java:86)
    at 
org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:60)
    at 
org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:60)
    at org.apache.jackrabbit.oak.segment.scheduler.Commit.apply(Commit.java:99)
    at 
org.apache.jackrabbit.oak.segment.scheduler.LockBasedScheduler.execute(LockBasedScheduler.java:299)
    at 
org.apache.jackrabbit.oak.segment.scheduler.LockBasedScheduler.schedule(LockBasedScheduler.java:270)
    at 
org.apache.jackrabbit.oak.segment.SegmentNodeStore.merge(SegmentNodeStore.java:211)
    at org.apache.jackrabbit.oak.core.MutableRoot.commit(MutableRoot.java:262)
    at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.commit(SessionDelegate.java:394)
    at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:549)
    at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl$9.performVoid(SessionImpl.java:459)
    at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performVoid(SessionDelegate.java:299)
    at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl.save(SessionImpl.java:456)

Reply via email to