diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java index d3144478f87..14c3d620675 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java @@ -74,7 +74,6 @@ public void backup(@NotNull SegmentReader reader, @NotNull Revisions revisions, GCGeneration gen = current.getRecordId().getSegmentId().getGcGeneration(); SegmentBufferWriter bufferWriter = new SegmentBufferWriter( backup.getSegmentIdProvider(), - backup.getReader(), "b", gen ); diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java index cbc0c84d28f..3f2c3ffa8f0 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java @@ -67,7 +67,6 @@ public void restore(File source, File destination) throws IOException, InvalidFi GCGeneration gen = head.getRecordId().getSegmentId().getGcGeneration(); SegmentBufferWriter bufferWriter = new SegmentBufferWriter( store.getSegmentIdProvider(), - store.getReader(), "r", gen ); diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CachingSegmentReader.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CachingSegmentReader.java index 6756c7768f5..a3200eb2b51 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CachingSegmentReader.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CachingSegmentReader.java @@ -19,11 +19,16 @@ package org.apache.jackrabbit.oak.segment; import static java.util.Objects.requireNonNull; +import static org.apache.jackrabbit.oak.segment.Segment.RECORD_ID_BYTES; import java.io.UnsupportedEncodingException; +import java.util.Arrays; import java.util.function.Supplier; +import org.apache.jackrabbit.oak.api.PropertyState; +import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.cache.CacheStats; +import org.apache.jackrabbit.oak.plugins.memory.PropertyStates; import org.apache.jackrabbit.oak.segment.util.SafeEncode; import org.apache.jackrabbit.oak.spi.blob.BlobStore; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -116,7 +121,71 @@ public Template readTemplate(@NotNull RecordId id) { long msb = segmentId.getMostSignificantBits(); long lsb = segmentId.getLeastSignificantBits(); return templateCache.get(msb, lsb, id.getRecordNumber(), - offset -> segmentId.getSegment().readTemplate(offset)); + offset -> readTemplate(segmentId.getSegment(), offset)); + } + + private Template readTemplate(Segment segment, int recordNumber) { + int head = segment.readInt(recordNumber); + boolean hasPrimaryType = (head & (1 << 31)) != 0; + boolean hasMixinTypes = (head & (1 << 30)) != 0; + boolean zeroChildNodes = (head & (1 << 29)) != 0; + boolean manyChildNodes = (head & (1 << 28)) != 0; + int mixinCount = (head >> 18) & ((1 << 10) - 1); + int propertyCount = head & ((1 << 18) - 1); + + int offset = 4; + + PropertyState primaryType = null; + if (hasPrimaryType) { + RecordId primaryId = segment.readRecordId(recordNumber, offset); + primaryType = PropertyStates.createProperty( + "jcr:primaryType", readString(primaryId), Type.NAME); + offset += RECORD_ID_BYTES; + } + + PropertyState mixinTypes = null; + if (hasMixinTypes) { + String[] mixins = new String[mixinCount]; + for (int i = 0; i < mixins.length; i++) { + RecordId mixinId = segment.readRecordId(recordNumber, offset); + mixins[i] = readString(mixinId); + offset += RECORD_ID_BYTES; + } + mixinTypes = PropertyStates.createProperty( + "jcr:mixinTypes", Arrays.asList(mixins), Type.NAMES); + } + + String childName = Template.ZERO_CHILD_NODES; + if (manyChildNodes) { + childName = Template.MANY_CHILD_NODES; + } else if (!zeroChildNodes) { + RecordId childNameId = segment.readRecordId(recordNumber, offset); + childName = readString(childNameId); + offset += RECORD_ID_BYTES; + } + + PropertyTemplate[] properties; + properties = readProps(segment, propertyCount, recordNumber, offset); + return new Template(this, primaryType, mixinTypes, properties, childName); + } + + private PropertyTemplate[] readProps(Segment segment, + int propertyCount, + int recordNumber, + int offset) { + PropertyTemplate[] properties = new PropertyTemplate[propertyCount]; + if (propertyCount > 0) { + RecordId id = segment.readRecordId(recordNumber, offset); + ListRecord propertyNames = new ListRecord(id, properties.length); + offset += RECORD_ID_BYTES; + for (int i = 0; i < propertyCount; i++) { + byte type = segment.readByte(recordNumber, offset++); + properties[i] = new PropertyTemplate(i, + readString(propertyNames.getEntry(i)), Type.fromTag( + Math.abs(type), type < 0)); + } + } + return properties; } private static String safeEncode(String value) { diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriterBuilder.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriterBuilder.java index 3cbd64dd683..54847293e2f 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriterBuilder.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriterBuilder.java @@ -218,20 +218,20 @@ public DefaultSegmentWriter build(@NotNull MemoryStore store) { @NotNull private WriteOperationHandler createWriter(@NotNull FileStore store, @Nullable PoolType poolType) { - return createWriter(store.getSegmentIdProvider(), store.getReader(), poolType); + return createWriter(store.getSegmentIdProvider(), poolType); } @NotNull private WriteOperationHandler createWriter(@NotNull MemoryStore store, @Nullable PoolType poolType) { - return createWriter(store.getSegmentIdProvider(), store.getReader(), poolType); + return createWriter(store.getSegmentIdProvider(), poolType); } @NotNull - private WriteOperationHandler createWriter(@NotNull SegmentIdProvider idProvider, @NotNull SegmentReader reader, @Nullable PoolType poolType) { + private WriteOperationHandler createWriter(@NotNull SegmentIdProvider idProvider, @Nullable PoolType poolType) { if (poolType == null) { - return new SegmentBufferWriter(idProvider, reader, name, generation.get()); + return new SegmentBufferWriter(idProvider, name, generation.get()); } else { - return SegmentBufferWriterPool.factory(idProvider, reader, name, generation).newPool(poolType); + return SegmentBufferWriterPool.factory(idProvider, name, generation).newPool(poolType); } } } diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java index 0f9a9c30964..c46558bcc2f 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java @@ -34,16 +34,12 @@ import java.io.OutputStream; import java.io.PrintStream; import java.nio.charset.StandardCharsets; -import java.util.Arrays; import java.util.UUID; import org.apache.commons.io.HexDump; import org.apache.commons.io.output.ByteArrayOutputStream; -import org.apache.jackrabbit.oak.api.PropertyState; -import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.commons.Buffer; import org.apache.jackrabbit.oak.commons.StringUtils; -import org.apache.jackrabbit.oak.plugins.memory.PropertyStates; import org.apache.jackrabbit.oak.segment.RecordNumbers.Entry; import org.apache.jackrabbit.oak.segment.data.RecordIdData; import org.apache.jackrabbit.oak.segment.data.SegmentData; @@ -126,9 +122,6 @@ public class Segment { static final int RECORD_NUMBER_COUNT_OFFSET = 18; - @NotNull - private final SegmentReader reader; - @NotNull private final SegmentId id; @@ -164,14 +157,12 @@ static int align(int address, int boundary) { Segment( @NotNull SegmentId id, - @NotNull SegmentReader reader, byte @NotNull [] buffer, @NotNull RecordNumbers recordNumbers, @NotNull SegmentReferences segmentReferences, @NotNull String info ) { this.id = requireNonNull(id); - this.reader = requireNonNull(reader); this.info = requireNonNull(info); if (id.isDataSegmentId()) { this.data = newSegmentData(Buffer.wrap(buffer)); @@ -185,10 +176,8 @@ static int align(int address, int boundary) { } public Segment(@NotNull SegmentIdProvider idProvider, - @NotNull SegmentReader reader, @NotNull final SegmentId id, @NotNull final Buffer data) { - this.reader = requireNonNull(reader); this.id = requireNonNull(id); if (id.isDataSegmentId()) { this.data = newSegmentData(requireNonNull(data).slice()); @@ -213,13 +202,11 @@ public String toString() { } public Segment( - @NotNull SegmentReader reader, @NotNull SegmentId id, @NotNull SegmentData data, @NotNull RecordNumbers recordNumbers, @NotNull SegmentReferences segmentReferences ) { - this.reader = requireNonNull(reader); this.id = requireNonNull(id); this.data = requireNonNull(data); this.recordNumbers = requireNonNull(recordNumbers); @@ -396,68 +383,6 @@ String readString(int recordNumber) { throw new IllegalStateException("Invalid return value"); } - @NotNull - Template readTemplate(int recordNumber) { - int head = readInt(recordNumber); - boolean hasPrimaryType = (head & (1 << 31)) != 0; - boolean hasMixinTypes = (head & (1 << 30)) != 0; - boolean zeroChildNodes = (head & (1 << 29)) != 0; - boolean manyChildNodes = (head & (1 << 28)) != 0; - int mixinCount = (head >> 18) & ((1 << 10) - 1); - int propertyCount = head & ((1 << 18) - 1); - - int offset = 4; - - PropertyState primaryType = null; - if (hasPrimaryType) { - RecordId primaryId = readRecordId(recordNumber, offset); - primaryType = PropertyStates.createProperty( - "jcr:primaryType", reader.readString(primaryId), Type.NAME); - offset += RECORD_ID_BYTES; - } - - PropertyState mixinTypes = null; - if (hasMixinTypes) { - String[] mixins = new String[mixinCount]; - for (int i = 0; i < mixins.length; i++) { - RecordId mixinId = readRecordId(recordNumber, offset); - mixins[i] = reader.readString(mixinId); - offset += RECORD_ID_BYTES; - } - mixinTypes = PropertyStates.createProperty( - "jcr:mixinTypes", Arrays.asList(mixins), Type.NAMES); - } - - String childName = Template.ZERO_CHILD_NODES; - if (manyChildNodes) { - childName = Template.MANY_CHILD_NODES; - } else if (!zeroChildNodes) { - RecordId childNameId = readRecordId(recordNumber, offset); - childName = reader.readString(childNameId); - offset += RECORD_ID_BYTES; - } - - PropertyTemplate[] properties; - properties = readProps(propertyCount, recordNumber, offset); - return new Template(reader, primaryType, mixinTypes, properties, childName); - } - - private PropertyTemplate[] readProps(int propertyCount, int recordNumber, int offset) { - PropertyTemplate[] properties = new PropertyTemplate[propertyCount]; - if (propertyCount > 0) { - RecordId id = readRecordId(recordNumber, offset); - ListRecord propertyNames = new ListRecord(id, properties.length); - offset += RECORD_ID_BYTES; - for (int i = 0; i < propertyCount; i++) { - byte type = readByte(recordNumber, offset++); - properties[i] = new PropertyTemplate(i, - reader.readString(propertyNames.getEntry(i)), Type.fromTag( - Math.abs(type), type < 0)); - } - } - return properties; - } - static long readLength(RecordId id) { return id.getSegment().readLength(id.getRecordNumber()); } diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java index ea72ac561f1..d7a8d1f3705 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java @@ -100,9 +100,6 @@ public String toString() { @NotNull private final SegmentIdProvider idProvider; - @NotNull - private final SegmentReader reader; - /** * Id of this writer. */ @@ -141,11 +138,9 @@ public String toString() { private boolean dirty; public SegmentBufferWriter(@NotNull SegmentIdProvider idProvider, - @NotNull SegmentReader reader, @Nullable String wid, @NotNull GCGeneration gcGeneration) { this.idProvider = requireNonNull(idProvider); - this.reader = requireNonNull(reader); this.wid = (wid == null ? "w-" + identityHashCode(this) : wid); @@ -214,7 +209,7 @@ private void newSegment(SegmentStore store) throws IOException { "{\"wid\":\"" + wid + '"' + ",\"sno\":" + idProvider.getSegmentIdCount() + ",\"t\":" + currentTimeMillis() + "}"; - segment = new Segment(idProvider.newDataSegmentId(), reader, buffer, recordNumbers, segmentReferences, metaInfo); + segment = new Segment(idProvider.newDataSegmentId(), buffer, recordNumbers, segmentReferences, metaInfo); statistics = new Statistics(); statistics.id = segment.getSegmentId(); diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java index cefc8583902..8c06bbd7590 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java @@ -51,9 +51,6 @@ public abstract class SegmentBufferWriterPool implements WriteOperationHandler { @NotNull private final SegmentIdProvider idProvider; - @NotNull - private final SegmentReader reader; - @NotNull private final Supplier gcGeneration; @@ -64,11 +61,9 @@ public abstract class SegmentBufferWriterPool implements WriteOperationHandler { private SegmentBufferWriterPool( @NotNull SegmentIdProvider idProvider, - @NotNull SegmentReader reader, @NotNull String wid, @NotNull Supplier gcGeneration) { this.idProvider = requireNonNull(idProvider); - this.reader = requireNonNull(reader); this.wid = requireNonNull(wid); this.gcGeneration = requireNonNull(gcGeneration); } @@ -82,19 +77,15 @@ public static class SegmentBufferWriterPoolFactory { @NotNull private final SegmentIdProvider idProvider; @NotNull - private final SegmentReader reader; - @NotNull private final String wid; @NotNull private final Supplier gcGeneration; private SegmentBufferWriterPoolFactory( @NotNull SegmentIdProvider idProvider, - @NotNull SegmentReader reader, @NotNull String wid, @NotNull Supplier gcGeneration) { this.idProvider = requireNonNull(idProvider); - this.reader = requireNonNull(reader); this.wid = requireNonNull(wid); this.gcGeneration = requireNonNull(gcGeneration); } @@ -103,9 +94,9 @@ private SegmentBufferWriterPoolFactory( public SegmentBufferWriterPool newPool(@NotNull SegmentBufferWriterPool.PoolType poolType) { switch (poolType) { case GLOBAL: - return new GlobalSegmentBufferWriterPool(idProvider, reader, wid, gcGeneration); + return new GlobalSegmentBufferWriterPool(idProvider, wid, gcGeneration); case THREAD_SPECIFIC: - return new ThreadSpecificSegmentBufferWriterPool(idProvider, reader, wid, gcGeneration); + return new ThreadSpecificSegmentBufferWriterPool(idProvider, wid, gcGeneration); default: throw new IllegalArgumentException("Unknown writer pool type."); } @@ -114,10 +105,9 @@ public SegmentBufferWriterPool newPool(@NotNull SegmentBufferWriterPool.PoolType public static SegmentBufferWriterPoolFactory factory( @NotNull SegmentIdProvider idProvider, - @NotNull SegmentReader reader, @NotNull String wid, @NotNull Supplier gcGeneration) { - return new SegmentBufferWriterPoolFactory(idProvider, reader, wid, gcGeneration); + return new SegmentBufferWriterPoolFactory(idProvider, wid, gcGeneration); } private static class ThreadSpecificSegmentBufferWriterPool extends SegmentBufferWriterPool { @@ -136,10 +126,9 @@ private static class ThreadSpecificSegmentBufferWriterPool extends SegmentBuffer public ThreadSpecificSegmentBufferWriterPool( @NotNull SegmentIdProvider idProvider, - @NotNull SegmentReader reader, @NotNull String wid, @NotNull Supplier gcGeneration) { - super(idProvider, reader, wid, gcGeneration); + super(idProvider, wid, gcGeneration); } @NotNull @@ -201,10 +190,9 @@ private static class GlobalSegmentBufferWriterPool extends SegmentBufferWriterPo public GlobalSegmentBufferWriterPool( @NotNull SegmentIdProvider idProvider, - @NotNull SegmentReader reader, @NotNull String wid, @NotNull Supplier gcGeneration) { - super(idProvider, reader, wid, gcGeneration); + super(idProvider, wid, gcGeneration); } @NotNull @@ -338,7 +326,7 @@ public GCGeneration getGCGeneration() { @NotNull protected SegmentBufferWriter newWriter(@NotNull GCGeneration gcGeneration) { - return new SegmentBufferWriter(idProvider, reader, getWriterId(), gcGeneration); + return new SegmentBufferWriter(idProvider, getWriterId(), gcGeneration); } @NotNull diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java index ce4ec194959..33a23b0e465 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java @@ -233,7 +233,7 @@ private void writeSegment(UUID id, byte[] data, EntryRecovery w) throws IOExcept w.recoverEntry(msb, lsb, data, 0, data.length, generation); if (SegmentId.isDataSegmentId(lsb)) { SegmentId segmentId = tracker.newSegmentId(msb, lsb); - Segment segment = new Segment(tracker, segmentReader, segmentId, buffer); + Segment segment = new Segment(tracker, segmentId, buffer); segmentCache.putSegment(segment); w.addSegment(segment); populateTarGraph(segment, w); @@ -298,7 +298,7 @@ Segment readSegmentUncached(TarFiles tarFiles, SegmentId id) { throw new SegmentNotFoundException(id); } segmentBufferMonitor.trackAllocation(buffer); - return new Segment(tracker, segmentReader, id, buffer); + return new Segment(tracker, id, buffer); } /** diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java index c0444dc67d0..a691c97ddb2 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java @@ -548,7 +548,7 @@ public void writeSegment(SegmentId id, byte[] buffer, int offset, int length) th data = Buffer.wrap(buffer, offset, length); } - segment = new Segment(tracker, segmentReader, id, data); + segment = new Segment(tracker, id, data); if (eagerSegmentCaching) { segmentCache.putSegment(segment); diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java index 50b0ee99f7b..947de17aa77 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java @@ -117,7 +117,7 @@ public void writeSegment( Buffer buffer = Buffer.allocate(length); buffer.put(data, offset, length); buffer.rewind(); - Segment segment = new Segment(tracker, segmentReader, id, buffer); + Segment segment = new Segment(tracker, id, buffer); if (segments.putIfAbsent(id, segment) != null) { throw new IOException("Segment override: " + id); } diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightEstimator.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightEstimator.java index a11a929c199..46067cfa1de 100644 --- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightEstimator.java +++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightEstimator.java @@ -339,7 +339,7 @@ private Segment randomSegment(int bufferSize) { Buffer data = Buffer.wrap(buffer); SegmentId id = randomSegmentId(false); - Segment segment = new Segment(store.getSegmentIdProvider(), store.getReader(), id, data); + Segment segment = new Segment(store.getSegmentIdProvider(), id, data); // // TODO check impact of MutableRecordNumbers overhead of 65k bytes diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPoolTest.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPoolTest.java index 1a2b3ed8ee1..3a520677ece 100644 --- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPoolTest.java +++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPoolTest.java @@ -68,7 +68,7 @@ public static List poolTypes() { public SegmentBufferWriterPoolTest(SegmentBufferWriterPool.PoolType poolType) throws IOException { pool = SegmentBufferWriterPool.factory( - store.getSegmentIdProvider(), store.getReader(), "", () -> gcGeneration) + store.getSegmentIdProvider(), "", () -> gcGeneration) .newPool(poolType); } diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterTest.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterTest.java index 6e5759d9ac1..95b761f8b9b 100644 --- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterTest.java +++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterTest.java @@ -110,7 +110,6 @@ public void tooBigRecord() throws Exception { SegmentBufferWriter writer = new SegmentBufferWriter( store.getSegmentIdProvider(), - store.getReader(), "t", store.getRevisions().getHead().getSegment().getGcGeneration() ); diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentTest.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentTest.java index 873ce895097..958335522fc 100644 --- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentTest.java +++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentTest.java @@ -29,27 +29,25 @@ public class SegmentTest { @Test public void createsSegmentFromCustomSegmentData() { - var segmentReader = mock(SegmentReader.class); var segmentId = mock(SegmentId.class); var segmentData = mock(SegmentData.class); when(segmentData.getVersion()).thenReturn((byte) 12); var recordNumbers = mock(RecordNumbers.class); var segmentReferences = mock(SegmentReferences.class); - var segment = new Segment(segmentReader, segmentId, segmentData, recordNumbers, segmentReferences); + var segment = new Segment(segmentId, segmentData, recordNumbers, segmentReferences); assertEquals(SegmentVersion.V_12, segment.getSegmentVersion()); } @Test public void creatingSegmentWithInvalidVersionNumberThrows() { - var segmentReader = mock(SegmentReader.class); var segmentId = mock(SegmentId.class); var segmentData = mock(SegmentData.class); when(segmentData.getVersion()).thenReturn((byte) 42); var recordNumbers = mock(RecordNumbers.class); var segmentReferences = mock(SegmentReferences.class); - assertThrows(IllegalArgumentException.class, () -> new Segment(segmentReader, segmentId, segmentData, recordNumbers, segmentReferences)); + assertThrows(IllegalArgumentException.class, () -> new Segment(segmentId, segmentData, recordNumbers, segmentReferences)); } } diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestUtils.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestUtils.java index 9886a95bba8..6f3eabc9495 100644 --- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestUtils.java +++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestUtils.java @@ -47,12 +47,11 @@ public static RecordId mockRecordId(long msb, long lsb, int offset) { public static Segment mockSegment(UUID uuid, byte[] buffer) { SegmentStore store = mock(SegmentStore.class); SegmentIdProvider idProvider = mock(SegmentIdProvider.class); - SegmentReader reader = mock(SegmentReader.class); long msb = uuid.getMostSignificantBits(); long lsb = uuid.getLeastSignificantBits(); SegmentId id = new SegmentId(store, msb, lsb); Buffer data = Buffer.wrap(buffer); - return new Segment(idProvider, reader, id, data); + return new Segment(idProvider, id, data); } public static long hash(byte[] data) {