diff --git oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java index dffbd2f298..ec03146627 100644 --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java @@ -203,7 +203,14 @@ public class SegmentBlob extends Record implements Blob { private static String readLongBlobId(Segment segment, int recordNumber) { RecordId blobId = segment.readRecordId(recordNumber, 1); - return blobId.getSegment().readString(blobId.getRecordNumber()); + + // if the blob id lives in the same segment, avoid reading again + // the segment, as it will trigger an SNFE on standby, see OAK-8006 + if (blobId.getSegmentId().equals(segment.getSegmentId())) { + return segment.readString(blobId.getRecordNumber()); + } else { + return blobId.getSegment().readString(blobId.getRecordNumber()); + } } private List getBulkRecordIds() {