Author: frm
Date: Thu Jul 27 09:22:12 2017
New Revision: 1803152
URL: http://svn.apache.org/viewvc?rev=1803152&view=rev
Log:
OAK-3349 - Move GCGeneration to the o.a.j.o.segment.file.tar package
Added:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java
- copied, changed from r1803151,
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/GCGeneration.java
Removed:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/GCGeneration.java
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriter.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriterBuilder.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCJournal.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCListener.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/CleanupContext.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarReader.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriter.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactorTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/OnlineCompactorTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPoolTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/GcJournalTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFileTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java
Thu Jul 27 09:22:12 2017
@@ -31,7 +31,7 @@ import com.google.common.base.Suppliers;
import org.apache.jackrabbit.oak.backup.FileStoreBackup;
import org.apache.jackrabbit.oak.segment.Compactor;
import org.apache.jackrabbit.oak.segment.DefaultSegmentWriter;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.apache.jackrabbit.oak.segment.Revisions;
import org.apache.jackrabbit.oak.segment.SegmentBufferWriter;
import org.apache.jackrabbit.oak.segment.SegmentNodeState;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java
Thu Jul 27 09:22:12 2017
@@ -30,7 +30,7 @@ import com.google.common.base.Suppliers;
import org.apache.jackrabbit.oak.backup.FileStoreRestore;
import org.apache.jackrabbit.oak.segment.Compactor;
import org.apache.jackrabbit.oak.segment.DefaultSegmentWriter;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.apache.jackrabbit.oak.segment.SegmentBufferWriter;
import org.apache.jackrabbit.oak.segment.SegmentNodeState;
import org.apache.jackrabbit.oak.segment.SegmentWriter;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriter.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriter.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriter.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriter.java
Thu Jul 27 09:22:12 2017
@@ -69,6 +69,7 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState;
import org.apache.jackrabbit.oak.segment.WriteOperationHandler.WriteOperation;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.DefaultNodeStateDiff;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriterBuilder.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriterBuilder.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriterBuilder.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriterBuilder.java
Thu Jul 27 09:22:12 2017
@@ -28,6 +28,7 @@ import com.google.common.base.Suppliers;
import org.apache.jackrabbit.oak.segment.WriterCacheManager.Empty;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.file.ReadOnlyFileStore;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.apache.jackrabbit.oak.segment.memory.MemoryStore;
/**
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
Thu Jul 27 09:22:12 2017
@@ -30,6 +30,7 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.segment.SegmentStream.BLOCK_SIZE;
import static org.apache.jackrabbit.oak.segment.SegmentVersion.LATEST_VERSION;
import static org.apache.jackrabbit.oak.segment.SegmentVersion.isValid;
+import static
org.apache.jackrabbit.oak.segment.file.tar.GCGeneration.newGCGeneration;
import java.io.IOException;
import java.io.OutputStream;
@@ -54,6 +55,7 @@ import org.apache.jackrabbit.oak.api.Typ
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.file.tar.GCGeneration;
/**
* A list of records.
@@ -378,7 +380,7 @@ public class Segment {
if (isDataSegmentId(segmentId.getLeastSignificantBits())) {
int full = data.getInt(GC_FULL_GENERATION_OFFSET);
int tail = data.getInt(GC_TAIL_GENERATION_OFFSET);
- return new GCGeneration(full, tail & 0x7fffffff, tail < 0);
+ return newGCGeneration(full, tail & 0x7fffffff, tail < 0);
} else {
return GCGeneration.NULL;
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
Thu Jul 27 09:22:12 2017
@@ -45,6 +45,7 @@ import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import org.apache.jackrabbit.oak.segment.RecordNumbers.Entry;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java
Thu Jul 27 09:22:12 2017
@@ -36,6 +36,7 @@ import javax.annotation.Nonnull;
import com.google.common.base.Supplier;
import com.google.common.util.concurrent.Monitor;
import com.google.common.util.concurrent.Monitor.Guard;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
/**
* This {@link WriteOperationHandler} uses a pool of {@link
SegmentBufferWriter}s,
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
Thu Jul 27 09:22:12 2017
@@ -27,6 +27,7 @@ import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import org.apache.jackrabbit.oak.commons.StringUtils;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java
Thu Jul 27 09:22:12 2017
@@ -52,6 +52,7 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.SegmentTracker;
import org.apache.jackrabbit.oak.segment.SegmentWriter;
import org.apache.jackrabbit.oak.segment.file.tar.EntryRecovery;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.apache.jackrabbit.oak.segment.file.tar.IOMonitor;
import org.apache.jackrabbit.oak.segment.file.tar.TarFiles;
import org.apache.jackrabbit.oak.segment.file.tar.TarRecovery;
@@ -233,8 +234,7 @@ public abstract class AbstractFileStore
long msb = id.getMostSignificantBits();
long lsb = id.getLeastSignificantBits();
ByteBuffer buffer = ByteBuffer.wrap(data);
- // FIXME OAK-3349 also handle the tail part of the gc generation and
flag during recovery
- int generation = Segment.getGcGeneration(buffer, id).getFull();
+ GCGeneration generation = Segment.getGcGeneration(buffer, id);
w.recoverEntry(msb, lsb, data, 0, data.length, generation);
if (SegmentId.isDataSegmentId(lsb)) {
Segment segment = new Segment(tracker, segmentReader,
tracker.newSegmentId(msb, lsb), buffer);
@@ -250,19 +250,13 @@ public abstract class AbstractFileStore
}
}
- // FIXME OAK-3349 also handle the tail part of the gc generation and flag
during recovery
private static void populateTarBinaryReferences(final Segment segment,
final EntryRecovery w) {
- final int generation = segment.getGcGeneration().getFull();
+ final GCGeneration generation = segment.getGcGeneration();
final UUID id = segment.getSegmentId().asUUID();
- segment.forEachRecord(new RecordConsumer() {
-
- @Override
- public void consume(int number, RecordType type, int offset) {
- if (type == RecordType.BLOB_ID) {
- w.recoverBinaryReference(generation, id,
SegmentBlob.readBlobId(segment, number));
- }
+ segment.forEachRecord((number, type, offset) -> {
+ if (type == RecordType.BLOB_ID) {
+ w.recoverBinaryReference(generation, id,
SegmentBlob.readBlobId(segment, number));
}
-
});
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
Thu Jul 27 09:22:12 2017
@@ -74,7 +74,6 @@ import com.google.common.base.Stopwatch;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
import com.google.common.io.Closer;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
import org.apache.jackrabbit.oak.segment.OnlineCompactor;
import org.apache.jackrabbit.oak.segment.RecordId;
import org.apache.jackrabbit.oak.segment.Segment;
@@ -88,6 +87,7 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions;
import org.apache.jackrabbit.oak.segment.file.GCJournal.GCJournalEntry;
import org.apache.jackrabbit.oak.segment.file.tar.CleanupContext;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.apache.jackrabbit.oak.segment.file.tar.TarFiles;
import org.apache.jackrabbit.oak.segment.file.tar.TarFiles.CleanupResult;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
@@ -474,7 +474,7 @@ public class FileStore extends AbstractF
// access some internal information stored in the segment and to store
// in an in-memory cache for later use.
- int generation = 0;
+ GCGeneration generation = GCGeneration.NULL;
Set<UUID> references = null;
Set<String> binaryReferences = null;
@@ -491,7 +491,7 @@ public class FileStore extends AbstractF
segment = new Segment(tracker, segmentReader, id, data);
// FIXME OAK-3349 also handle the tail part of the gc generation
and flag when writing segments
- generation = segment.getGcGeneration().getFull();
+ generation = segment.getGcGeneration();
references = readReferences(segment);
binaryReferences = readBinaryReferences(segment);
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java
Thu Jul 27 09:22:12 2017
@@ -40,7 +40,7 @@ import com.google.common.base.Predicate;
import org.apache.jackrabbit.oak.segment.CacheWeights.NodeCacheWeigher;
import org.apache.jackrabbit.oak.segment.CacheWeights.StringCacheWeigher;
import org.apache.jackrabbit.oak.segment.CacheWeights.TemplateCacheWeigher;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.apache.jackrabbit.oak.segment.RecordCache;
import org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener;
import org.apache.jackrabbit.oak.segment.WriterCacheManager;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCJournal.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCJournal.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCJournal.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCJournal.java
Thu Jul 27 09:22:12 2017
@@ -26,6 +26,7 @@ import static java.nio.file.StandardOpen
import static java.nio.file.StandardOpenOption.CREATE;
import static java.nio.file.StandardOpenOption.DSYNC;
import static java.nio.file.StandardOpenOption.WRITE;
+import static
org.apache.jackrabbit.oak.segment.file.tar.GCGeneration.newGCGeneration;
import java.io.BufferedWriter;
import java.io.File;
@@ -38,8 +39,8 @@ import java.util.List;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
import org.apache.jackrabbit.oak.segment.RecordId;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -179,7 +180,7 @@ public class GCJournal {
root = RecordId.NULL.toString10();
}
// FIXME OAK-3349 set tail part once we have that information in
the gc.log file
- return new GCJournalEntry(repoSize, reclaimedSize, ts, new
GCGeneration(gcGen, 0, false), nodes, root);
+ return new GCJournalEntry(repoSize, reclaimedSize, ts,
newGCGeneration(gcGen, 0, false), nodes, root);
}
@CheckForNull
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCListener.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCListener.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCListener.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/GCListener.java
Thu Jul 27 09:22:12 2017
@@ -21,7 +21,7 @@ package org.apache.jackrabbit.oak.segmen
import javax.annotation.Nonnull;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.apache.jackrabbit.oak.spi.gc.DelegatingGCMonitor;
/**
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/CleanupContext.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/CleanupContext.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/CleanupContext.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/CleanupContext.java
Thu Jul 27 09:22:12 2017
@@ -20,8 +20,6 @@ package org.apache.jackrabbit.oak.segmen
import java.util.Collection;
import java.util.UUID;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
-
/**
* Initial data and logic needed for the cleanup of unused TAR entries.
*/
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java
Thu Jul 27 09:22:12 2017
@@ -22,10 +22,10 @@ import java.util.UUID;
public interface EntryRecovery {
- void recoverEntry(long msb, long lsb, byte[] data, int offset, int size,
int generation) throws IOException;
+ void recoverEntry(long msb, long lsb, byte[] data, int offset, int size,
GCGeneration generation) throws IOException;
void recoverGraphEdge(UUID from, UUID to);
- void recoverBinaryReference(int generation, UUID segmentId, String
reference);
+ void recoverBinaryReference(GCGeneration generation, UUID segmentId,
String reference);
}
Copied:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java
(from r1803151,
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/GCGeneration.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/GCGeneration.java&r1=1803151&r2=1803152&rev=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/GCGeneration.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java
Thu Jul 27 09:22:12 2017
@@ -16,32 +16,41 @@
*
*/
-package org.apache.jackrabbit.oak.segment;
+package org.apache.jackrabbit.oak.segment.file.tar;
import javax.annotation.Nonnull;
import com.google.common.base.Objects;
/**
- * Instances of this class represent the garbage collection generation related
information
- * of a segment. Each generation consists of a full and a tail part and a tail
flag.
- * The full and tail part are each increased by the respective garbage
collection process.
- * In the tail compaction case the segments written by the compactor will also
have their
- * tail flag set so cleanup can recognise them as not reclaimable (unless the
full part is
- * older then the number of retained generations). Segments written by normal
repository
- * writes will inherit the full and tail generations parts of the segments
written by the
- * previous compaction process. However the tail flag is never set for such
segments ensuring
- * cleanup after subsequent tail compactions can reclaim them once old enough
(e.g. the tail
- * part of the generation is older then the number of retained generations).
+ * Instances of this class represent the garbage collection generation related
+ * information of a segment. Each generation consists of a full and a tail part
+ * and a tail flag. The full and tail part are each increased by the respective
+ * garbage collection process. In the tail compaction case the segments written
+ * by the compactor will also have their tail flag set so cleanup can recognise
+ * them as not reclaimable (unless the full part is older then the number of
+ * retained generations). Segments written by normal repository writes will
+ * inherit the full and tail generations parts of the segments written by the
+ * previous compaction process. However the tail flag is never set for such
+ * segments ensuring cleanup after subsequent tail compactions can reclaim them
+ * once old enough (e.g. the tail part of the generation is older then the
+ * number of retained generations).
*/
public final class GCGeneration {
+
public static final GCGeneration NULL = new GCGeneration(0, 0, false);
+ public static GCGeneration newGCGeneration(int full, int tail, boolean
isTail) {
+ return new GCGeneration(full, tail, isTail);
+ }
+
private final int full;
+
private final int tail;
+
private final boolean isTail;
- public GCGeneration(int full, int tail, boolean isTail) {
+ private GCGeneration(int full, int tail, boolean isTail) {
this.full = full;
this.tail = tail;
this.isTail = isTail;
@@ -60,8 +69,8 @@ public final class GCGeneration {
}
/**
- * Create a new instance with the full part incremented by one and
- * the tail part and the tail flag left unchanged.
+ * Create a new instance with the full part incremented by one and the tail
+ * part and the tail flag left unchanged.
*/
@Nonnull
public GCGeneration nextFull() {
@@ -69,9 +78,8 @@ public final class GCGeneration {
}
/**
- * Create a new instance with the tail part incremented by one and
- * the full part and the tail flag left unchanged.
- * @return
+ * Create a new instance with the tail part incremented by one and the full
+ * part and the tail flag left unchanged.
*/
@Nonnull
public GCGeneration nextTail() {
@@ -79,9 +87,8 @@ public final class GCGeneration {
}
/**
- * Create a new instance with the tail flag unset and the full
- * part and tail part left unchanged.
- * @return
+ * Create a new instance with the tail flag unset and the full part and
tail
+ * part left unchanged.
*/
@Nonnull
public GCGeneration nonTail() {
@@ -89,14 +96,16 @@ public final class GCGeneration {
}
/**
- * The the difference of the full part between {@code this} and {@code
that}.
+ * The the difference of the full part between {@code this} and {@code
+ * that}.
*/
public int compareFull(@Nonnull GCGeneration that) {
return full - that.full;
}
/**
- * The the difference of the tail part between {@code this} and {@code
that}.
+ * The the difference of the tail part between {@code this} and {@code
+ * that}.
*/
public int compareTail(@Nonnull GCGeneration that) {
return tail - that.tail;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java
Thu Jul 27 09:22:12 2017
@@ -67,9 +67,9 @@ class TarEntry {
private final int size;
- private final int generation;
+ private final GCGeneration generation;
- TarEntry(long msb, long lsb, int offset, int size, int generation) {
+ TarEntry(long msb, long lsb, int offset, int size, GCGeneration
generation) {
this.msb = msb;
this.lsb = lsb;
this.offset = offset;
@@ -93,7 +93,7 @@ class TarEntry {
return size;
}
- int generation() {
+ GCGeneration generation() {
return generation;
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java
Thu Jul 27 09:22:12 2017
@@ -50,7 +50,6 @@ import javax.annotation.Nonnull;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -465,7 +464,7 @@ public class TarFiles implements Closeab
return null;
}
- public void writeSegment(UUID id, byte[] buffer, int offset, int length,
int generation, Set<UUID> references, Set<String> binaryReferences) throws
IOException {
+ public void writeSegment(UUID id, byte[] buffer, int offset, int length,
GCGeneration generation, Set<UUID> references, Set<String> binaryReferences)
throws IOException {
lock.writeLock().lock();
try {
long size = writer.writeEntry(
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarReader.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarReader.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarReader.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarReader.java
Thu Jul 27 09:22:12 2017
@@ -29,6 +29,7 @@ import static com.google.common.collect.
import static com.google.common.collect.Sets.newHashSetWithExpectedSize;
import static java.nio.ByteBuffer.wrap;
import static java.util.Collections.singletonList;
+import static
org.apache.jackrabbit.oak.segment.file.tar.GCGeneration.newGCGeneration;
import static
org.apache.jackrabbit.oak.segment.file.tar.TarConstants.BINARY_REFERENCES_MAGIC;
import static
org.apache.jackrabbit.oak.segment.file.tar.TarConstants.BLOCK_SIZE;
import static
org.apache.jackrabbit.oak.segment.file.tar.TarConstants.GRAPH_MAGIC;
@@ -61,7 +62,6 @@ import com.google.common.base.Predicate;
import com.google.common.base.Stopwatch;
import com.google.common.collect.Sets;
import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -207,7 +207,7 @@ class TarReader implements Closeable {
recovery.recoverEntry(entry.getKey(), entry.getValue(),
new EntryRecovery() {
@Override
- public void recoverEntry(long msb, long lsb, byte[]
data, int offset, int size, int generation) throws IOException {
+ public void recoverEntry(long msb, long lsb, byte[]
data, int offset, int size, GCGeneration generation) throws IOException {
writer.writeEntry(msb, lsb, data, offset, size,
generation);
}
@@ -217,7 +217,7 @@ class TarReader implements Closeable {
}
@Override
- public void recoverBinaryReference(int generation,
UUID segmentId, String reference) {
+ public void recoverBinaryReference(GCGeneration
generation, UUID segmentId, String reference) {
writer.addBinaryReference(generation, segmentId,
reference);
}
@@ -642,7 +642,8 @@ class TarReader implements Closeable {
index.getLong(position + 8),
index.getInt(position + 16),
index.getInt(position + 20),
- index.getInt(position + 24));
+ // TODO frm This should read both a full and a tail
generation. See OAK-6456.
+ newGCGeneration(index.getInt(position + 24), 0, false));
position += TarEntry.SIZE;
}
Arrays.sort(entries, TarEntry.OFFSET_ORDER);
@@ -693,7 +694,7 @@ class TarReader implements Closeable {
for (Entry<Integer, Map<UUID, Set<String>>> entry :
generations.entrySet()) {
// FIXME OAK-3349 cannot properly clean up under tail compaction
here since we don't have access to the tail part of the generation (i.e. it is
not in the tar index).
- if (skipGeneration.apply(new GCGeneration(entry.getKey(), 0,
false))) {
+ if (skipGeneration.apply(newGCGeneration(entry.getKey(), 0,
false))) {
continue;
}
@@ -750,7 +751,7 @@ class TarReader implements Closeable {
TarEntry entry = entries[i];
UUID id = new UUID(entry.msb(), entry.lsb());
// FIXME OAK-3349 cannot properly clean up under tail compaction
here since we don't have access to the tail part of the generation (i.e. it is
not in the tar index). As a workaround for now the implementation of
shouldReclaim() could directly read the tail generation from the segment (i.e.
SegmentIdProvider.newSegmentId(id.getMostSignificantBits(),
id.getLeastSignificantBits()).getGcGeneration().getTail())
- if (context.shouldReclaim(id, new GCGeneration(entry.generation(),
0, false), references.remove(id))) {
+ if (context.shouldReclaim(id, entry.generation(),
references.remove(id))) {
reclaimable.add(id);
} else {
for (UUID refId : getReferences(id, graph)) {
@@ -856,7 +857,7 @@ class TarReader implements Closeable {
long lsb = entry.lsb();
int offset = entry.offset();
int size = entry.size();
- int gen = entry.generation();
+ GCGeneration gen = entry.generation();
byte[] data = new byte[size];
readSegment(msb, lsb, offset, size).get(data);
writer.writeEntry(msb, lsb, data, 0, size, gen);
@@ -897,7 +898,8 @@ class TarReader implements Closeable {
continue;
}
for (String reference : se.getValue()) {
- writer.addBinaryReference(ge.getKey(), se.getKey(),
reference);
+ // TODO frm Properly handle full and tail generations. See
OAK-6468.
+ writer.addBinaryReference(newGCGeneration(ge.getKey(), 0,
false), se.getKey(), reference);
}
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriter.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriter.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriter.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriter.java
Thu Jul 27 09:22:12 2017
@@ -86,10 +86,10 @@ class TarWriter implements Closeable {
private final FileStoreMonitor monitor;
/**
- * File handle. Initialized lazily in
- * {@link #writeEntry(long, long, byte[], int, int, int)} to avoid creating
- * an extra empty file when just reading from the repository.
- * Should only be accessed from synchronized code.
+ * File handle. Initialized lazily in {@link #writeEntry(UUID, byte[],
+ * byte[], int, int, GCGeneration)} to avoid creating an extra empty file
+ * when just reading from the repository. Should only be accessed from
+ * synchronized code.
*/
private RandomAccessFile access = null;
@@ -125,7 +125,8 @@ class TarWriter implements Closeable {
private final IOMonitor ioMonitor;
/**
- * Used for maintenance operations (GC or recovery) via the TarReader and
tests
+ * Used for maintenance operations (GC or recovery) via the TarReader and
+ * tests
*/
TarWriter(File file, IOMonitor ioMonitor) {
this.file = file;
@@ -172,9 +173,7 @@ class TarWriter implements Closeable {
}
}
- long writeEntry(
- long msb, long lsb, byte[] data, int offset, int size, int
generation)
- throws IOException {
+ long writeEntry(long msb, long lsb, byte[] data, int offset, int size,
GCGeneration generation) throws IOException {
checkNotNull(data);
checkPositionIndexes(offset, offset + size, data.length);
@@ -188,7 +187,7 @@ class TarWriter implements Closeable {
return writeEntry(uuid, header, data, offset, size, generation);
}
- private synchronized long writeEntry(UUID uuid, byte[] header, byte[]
data, int offset, int size, int generation) throws IOException {
+ private synchronized long writeEntry(UUID uuid, byte[] header, byte[]
data, int offset, int size, GCGeneration generation) throws IOException {
checkState(!closed);
if (access == null) {
@@ -224,33 +223,16 @@ class TarWriter implements Closeable {
return currentLength;
}
- void addBinaryReference(int generation, UUID segmentId, String reference) {
- Map<UUID, Set<String>> segmentToReferences =
binaryReferences.get(generation);
-
- if (segmentToReferences == null) {
- segmentToReferences = newHashMap();
- binaryReferences.put(generation, segmentToReferences);
- }
-
- Set<String> references = segmentToReferences.get(segmentId);
-
- if (references == null) {
- references = newHashSet();
- segmentToReferences.put(segmentId, references);
- }
-
- references.add(reference);
+ void addBinaryReference(GCGeneration generation, UUID segmentId, String
reference) {
+ // TODO frm Include both full and tail generation. See OAK-6468.
+ binaryReferences
+ .computeIfAbsent(generation.getFull(), k -> newHashMap())
+ .computeIfAbsent(segmentId, k -> newHashSet())
+ .add(reference);
}
void addGraphEdge(UUID from, UUID to) {
- Set<UUID> adj = graph.get(from);
-
- if (adj == null) {
- adj = newHashSet();
- graph.put(from, adj);
- }
-
- adj.add(to);
+ graph.computeIfAbsent(from, k -> newHashSet()).add(to);
}
/**
@@ -517,7 +499,8 @@ class TarWriter implements Closeable {
buffer.putLong(entry.lsb());
buffer.putInt(entry.offset());
buffer.putInt(entry.size());
- buffer.putInt(entry.generation());
+ // TODO frm Include both the full and tail generation. See
OAK-6456.
+ buffer.putInt(entry.generation().getFull());
}
CRC32 checksum = new CRC32();
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientSync.java
Thu Jul 27 09:22:12 2017
@@ -35,7 +35,7 @@ import javax.management.StandardMBean;
import com.google.common.base.Supplier;
import io.netty.channel.nio.NioEventLoopGroup;
import org.apache.jackrabbit.core.data.util.NamedThreadFactory;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.standby.jmx.ClientStandbyStatusMBean;
import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactorTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactorTest.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactorTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactorTest.java
Thu Jul 27 09:22:12 2017
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.segmen
import static
org.apache.jackrabbit.oak.segment.DefaultSegmentWriterBuilder.defaultSegmentWriterBuilder;
import static
org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions.defaultGCOptions;
+import static
org.apache.jackrabbit.oak.segment.file.tar.GCGeneration.newGCGeneration;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -53,7 +54,7 @@ public class CompactorTest {
init(store);
SegmentWriter writer = defaultSegmentWriterBuilder("c")
- .withGeneration(new GCGeneration(1, 0, false))
+ .withGeneration(newGCGeneration(1, 0, false))
.build(memoryStore);
Compactor compactor = new Compactor(memoryStore.getReader(), writer,
memoryStore.getBlobStore(), Suppliers.ofInstance(false),
defaultGCOptions());
@@ -78,7 +79,7 @@ public class CompactorTest {
NodeStore store =
SegmentNodeStoreBuilders.builder(memoryStore).build();
SegmentWriter writer = defaultSegmentWriterBuilder("c")
- .withGeneration(new GCGeneration(1, 0, false))
+ .withGeneration(newGCGeneration(1, 0, false))
.build(memoryStore);
Compactor compactor = new Compactor(memoryStore.getReader(), writer,
memoryStore.getBlobStore(), Suppliers.ofInstance(true),
defaultGCOptions());
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java
Thu Jul 27 09:22:12 2017
@@ -18,6 +18,7 @@
package org.apache.jackrabbit.oak.segment;
import static
org.apache.jackrabbit.oak.segment.DefaultSegmentWriterBuilder.defaultSegmentWriterBuilder;
+import static
org.apache.jackrabbit.oak.segment.file.tar.GCGeneration.newGCGeneration;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
@@ -31,6 +32,7 @@ import com.google.common.base.Supplier;
import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -65,19 +67,19 @@ public class NodeRecordTest {
SegmentWriter writer;
writer = defaultSegmentWriterBuilder("1")
- .withGeneration(new GCGeneration(1, 0, false))
+ .withGeneration(newGCGeneration(1, 0, false))
.build(store);
SegmentNodeState one = new SegmentNodeState(store.getReader(),
writer, store.getBlobStore(), writer.writeNode(EmptyNodeState.EMPTY_NODE));
writer.flush();
writer = defaultSegmentWriterBuilder("2")
- .withGeneration(new GCGeneration(2, 0, false))
+ .withGeneration(newGCGeneration(2, 0, false))
.build(store);
SegmentNodeState two = new SegmentNodeState(store.getReader(),
writer, store.getBlobStore(), writer.writeNode(one));
writer.flush();
writer = defaultSegmentWriterBuilder("3")
- .withGeneration(new GCGeneration(3, 0, false))
+ .withGeneration(newGCGeneration(3, 0, false))
.build(store);
SegmentNodeState three = new SegmentNodeState(store.getReader(),
writer, store.getBlobStore(), writer.writeNode(two));
writer.flush();
@@ -108,7 +110,7 @@ public class NodeRecordTest {
.with(nodesOnlyCache())
.build(store);
- generation.set(new GCGeneration(1, 0, false));
+ generation.set(newGCGeneration(1, 0, false));
// Write a new node with a non trivial template. This record will
// belong to generation 1.
@@ -121,7 +123,7 @@ public class NodeRecordTest {
SegmentNodeState base = new SegmentNodeState(store.getReader(),
writer, store.getBlobStore(), baseId);
writer.flush();
- generation.set(new GCGeneration(2, 0, false));
+ generation.set(newGCGeneration(2, 0, false));
// Compact that same record to generation 2.
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/OnlineCompactorTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/OnlineCompactorTest.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/OnlineCompactorTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/OnlineCompactorTest.java
Thu Jul 27 09:22:12 2017
@@ -22,6 +22,7 @@ import static com.google.common.collect.
import static
org.apache.jackrabbit.oak.plugins.memory.MultiBinaryPropertyState.binaryPropertyFromBlob;
import static
org.apache.jackrabbit.oak.segment.DefaultSegmentWriterBuilder.defaultSegmentWriterBuilder;
import static
org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.fileStoreBuilder;
+import static
org.apache.jackrabbit.oak.segment.file.tar.GCGeneration.newGCGeneration;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -120,7 +121,7 @@ public class OnlineCompactorTest {
@Nonnull
private static OnlineCompactor createCompactor(FileStore fileStore,
Supplier<Boolean> cancel) {
SegmentWriter writer = defaultSegmentWriterBuilder("c")
- .withGeneration(new GCGeneration(1, 0, false))
+ .withGeneration(newGCGeneration(1, 0, false))
.build(fileStore);
return new OnlineCompactor(fileStore.getReader(), writer,
fileStore.getBlobStore(), cancel, () -> {});
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPoolTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPoolTest.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPoolTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPoolTest.java
Thu Jul 27 09:22:12 2017
@@ -41,6 +41,7 @@ import javax.annotation.Nonnull;
import com.google.common.base.Suppliers;
import org.apache.jackrabbit.oak.segment.WriteOperationHandler.WriteOperation;
+import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.apache.jackrabbit.oak.segment.memory.MemoryStore;
import org.junit.After;
import org.junit.Test;
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/GcJournalTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/GcJournalTest.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/GcJournalTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/GcJournalTest.java
Thu Jul 27 09:22:12 2017
@@ -20,6 +20,7 @@
package org.apache.jackrabbit.oak.segment.file;
import static com.google.common.base.Charsets.UTF_8;
+import static
org.apache.jackrabbit.oak.segment.file.tar.GCGeneration.newGCGeneration;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -28,7 +29,6 @@ import java.nio.file.Files;
import java.util.Collection;
import java.util.List;
-import org.apache.jackrabbit.oak.segment.GCGeneration;
import org.apache.jackrabbit.oak.segment.RecordId;
import org.apache.jackrabbit.oak.segment.file.GCJournal.GCJournalEntry;
import org.junit.Rule;
@@ -38,29 +38,28 @@ import org.junit.rules.TemporaryFolder;
public class GcJournalTest {
@Rule
- public final TemporaryFolder segmentFolder = new TemporaryFolder(new File(
- "target"));
+ public final TemporaryFolder segmentFolder = new TemporaryFolder(new
File("target"));
@Test
public void tarGcJournal() throws Exception {
File directory = segmentFolder.newFolder();
GCJournal gc = new GCJournal(directory);
- gc.persist(0, 100, new GCGeneration(1,0 , false), 50,
RecordId.NULL.toString10());
+ gc.persist(0, 100, newGCGeneration(1, 0, false), 50,
RecordId.NULL.toString10());
GCJournalEntry e0 = gc.read();
assertEquals(100, e0.getRepoSize());
assertEquals(0, e0.getReclaimedSize());
assertEquals(50, e0.getNodes());
assertEquals(RecordId.NULL.toString10(), e0.getRoot());
- gc.persist(0, 250, new GCGeneration(2, 0, false), 75,
RecordId.NULL.toString());
+ gc.persist(0, 250, newGCGeneration(2, 0, false), 75,
RecordId.NULL.toString());
GCJournalEntry e1 = gc.read();
assertEquals(250, e1.getRepoSize());
assertEquals(0, e1.getReclaimedSize());
assertEquals(75, e1.getNodes());
assertEquals(RecordId.NULL.toString(), e1.getRoot());
- gc.persist(50, 200, new GCGeneration(3, 0, false), 90, "foo");
+ gc.persist(50, 200, newGCGeneration(3, 0, false), 90, "foo");
GCJournalEntry e2 = gc.read();
assertEquals(200, e2.getRepoSize());
assertEquals(50, e2.getReclaimedSize());
@@ -68,7 +67,7 @@ public class GcJournalTest {
assertEquals("foo", e2.getRoot());
// same gen
- gc.persist(75, 300, new GCGeneration(3, 0, false), 125, "bar");
+ gc.persist(75, 300, newGCGeneration(3, 0, false), 125, "bar");
GCJournalEntry e3 = gc.read();
assertEquals(200, e3.getRepoSize());
assertEquals(50, e3.getReclaimedSize());
@@ -83,4 +82,5 @@ public class GcJournalTest {
List<String> allLines = Files.readAllLines(file.toPath(), UTF_8);
assertEquals(allLines.size(), 3);
}
+
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFileTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFileTest.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFileTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFileTest.java
Thu Jul 27 09:22:12 2017
@@ -41,6 +41,10 @@ import org.junit.rules.TemporaryFolder;
public class TarFileTest {
+ private static GCGeneration generation(int full) {
+ return GCGeneration.newGCGeneration(full, 0, false);
+ }
+
private File file;
@Rule
@@ -59,7 +63,7 @@ public class TarFileTest {
byte[] data = "Hello, World!".getBytes(UTF_8);
try (TarWriter writer = new TarWriter(file, new IOMonitorAdapter())) {
- writer.writeEntry(msb, lsb, data, 0, data.length, 0);
+ writer.writeEntry(msb, lsb, data, 0, data.length, generation(0));
assertEquals(ByteBuffer.wrap(data), writer.readEntry(msb, lsb));
}
@@ -73,19 +77,19 @@ public class TarFileTest {
@Test
public void testWriteAndReadBinaryReferences() throws Exception {
try (TarWriter writer = new TarWriter(file, new IOMonitorAdapter())) {
- writer.writeEntry(0x00, 0x00, new byte[] {0x01, 0x02, 0x3}, 0, 3,
0);
+ writer.writeEntry(0x00, 0x00, new byte[] {0x01, 0x02, 0x3}, 0, 3,
generation(0));
- writer.addBinaryReference(1, new UUID(1, 0), "r0");
- writer.addBinaryReference(1, new UUID(1, 1), "r1");
- writer.addBinaryReference(1, new UUID(1, 2), "r2");
- writer.addBinaryReference(1, new UUID(1, 3), "r3");
-
- writer.addBinaryReference(2, new UUID(2, 0), "r4");
- writer.addBinaryReference(2, new UUID(2, 1), "r5");
- writer.addBinaryReference(2, new UUID(2, 2), "r6");
+ writer.addBinaryReference(generation(1), new UUID(1, 0), "r0");
+ writer.addBinaryReference(generation(1), new UUID(1, 1), "r1");
+ writer.addBinaryReference(generation(1), new UUID(1, 2), "r2");
+ writer.addBinaryReference(generation(1), new UUID(1, 3), "r3");
+
+ writer.addBinaryReference(generation(2), new UUID(2, 0), "r4");
+ writer.addBinaryReference(generation(2), new UUID(2, 1), "r5");
+ writer.addBinaryReference(generation(2), new UUID(2, 2), "r6");
- writer.addBinaryReference(3, new UUID(3, 0), "r7");
- writer.addBinaryReference(3, new UUID(3, 1), "r8");
+ writer.addBinaryReference(generation(3), new UUID(3, 0), "r7");
+ writer.addBinaryReference(generation(3), new UUID(3, 1), "r8");
}
Map<UUID, Set<String>> one = newHashMap();
@@ -120,22 +124,22 @@ public class TarFileTest {
@Test
public void binaryReferencesIndexShouldBeTrimmedDownOnSweep() throws
Exception {
try (TarWriter writer = new TarWriter(file, new IOMonitorAdapter())) {
- writer.writeEntry(1, 1, new byte[] {1}, 0, 1, 1);
- writer.writeEntry(1, 2, new byte[] {1}, 0, 1, 1);
- writer.writeEntry(2, 1, new byte[] {1}, 0, 1, 2);
- writer.writeEntry(2, 2, new byte[] {1}, 0, 1, 2);
+ writer.writeEntry(1, 1, new byte[] {1}, 0, 1, generation(1));
+ writer.writeEntry(1, 2, new byte[] {1}, 0, 1, generation(1));
+ writer.writeEntry(2, 1, new byte[] {1}, 0, 1, generation(2));
+ writer.writeEntry(2, 2, new byte[] {1}, 0, 1, generation(2));
- writer.addBinaryReference(1, new UUID(1, 1), "a");
- writer.addBinaryReference(1, new UUID(1, 2), "b");
+ writer.addBinaryReference(generation(1), new UUID(1, 1), "a");
+ writer.addBinaryReference(generation(1), new UUID(1, 2), "b");
- writer.addBinaryReference(2, new UUID(2, 1), "c");
- writer.addBinaryReference(2, new UUID(2, 2), "d");
+ writer.addBinaryReference(generation(2), new UUID(2, 1), "c");
+ writer.addBinaryReference(generation(2), new UUID(2, 2), "d");
}
Set<UUID> sweep = newSet(new UUID(1, 1), new UUID(2, 2));
try (TarReader reader = TarReader.open(file, false, new
IOMonitorAdapter())) {
- try (TarReader swept = reader.sweep(sweep, new HashSet<UUID>())) {
+ try (TarReader swept = reader.sweep(sweep, new HashSet<>())) {
assertNotNull(swept);
Map<UUID, Set<String>> one = newHashMap();
@@ -156,12 +160,12 @@ public class TarFileTest {
@Test
public void graphShouldBeTrimmedDownOnSweep() throws Exception {
try (TarWriter writer = new TarWriter(file, new IOMonitorAdapter())) {
- writer.writeEntry(1, 1, new byte[] {1}, 0, 1, 1);
- writer.writeEntry(1, 2, new byte[] {1}, 0, 1, 1);
- writer.writeEntry(1, 3, new byte[] {1}, 0, 1, 1);
- writer.writeEntry(2, 1, new byte[] {1}, 0, 1, 2);
- writer.writeEntry(2, 2, new byte[] {1}, 0, 1, 2);
- writer.writeEntry(2, 3, new byte[] {1}, 0, 1, 2);
+ writer.writeEntry(1, 1, new byte[] {1}, 0, 1, generation(1));
+ writer.writeEntry(1, 2, new byte[] {1}, 0, 1, generation(1));
+ writer.writeEntry(1, 3, new byte[] {1}, 0, 1, generation(1));
+ writer.writeEntry(2, 1, new byte[] {1}, 0, 1, generation(2));
+ writer.writeEntry(2, 2, new byte[] {1}, 0, 1, generation(2));
+ writer.writeEntry(2, 3, new byte[] {1}, 0, 1, generation(2));
writer.addGraphEdge(new UUID(1, 1), new UUID(1, 2));
writer.addGraphEdge(new UUID(1, 2), new UUID(1, 3));
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java?rev=1803152&r1=1803151&r2=1803152&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java
Thu Jul 27 09:22:12 2017
@@ -20,6 +20,7 @@
package org.apache.jackrabbit.oak.segment.file.tar;
import static com.google.common.base.Charsets.UTF_8;
+import static
org.apache.jackrabbit.oak.segment.file.tar.GCGeneration.newGCGeneration;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
@@ -52,7 +53,7 @@ public class TarWriterTest {
long msb = id.getMostSignificantBits();
long lsb = id.getLeastSignificantBits() & (-1 >>> 4); // OAK-1672
byte[] data = "Hello, World!".getBytes(UTF_8);
- t1.writeEntry(msb, lsb, data, 0, data.length, 0);
+ t1.writeEntry(msb, lsb, data, 0, data.length, newGCGeneration(0, 0,
false));
TarWriter t2 = t1.createNextGeneration();
assertNotEquals(t1, t2);
@@ -77,7 +78,7 @@ public class TarWriterTest {
try (TarWriter writer = new TarWriter(folder.getRoot(), monitor, 0,
new IOMonitorAdapter())) {
long sizeBefore = writer.fileLength();
long writtenBefore = monitor.written;
- writer.writeEntry(0, 0, new byte[42], 0, 42, 0);
+ writer.writeEntry(0, 0, new byte[42], 0, 42, newGCGeneration(0, 0,
false));
long sizeAfter = writer.fileLength();
long writtenAfter = monitor.written;
assertEquals(sizeAfter - sizeBefore, writtenAfter - writtenBefore);