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);


Reply via email to