Author: tomekr
Date: Tue Mar 20 10:53:44 2018
New Revision: 1827291

URL: http://svn.apache.org/viewvc?rev=1827291&view=rev
Log:
OAK-7355: Move the pluggable storage interfaces to the SPI package

Added:
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/SimpleIndexEntry.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/FileStoreMonitor.java
      - copied, changed from r1827287, 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitor.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/FileStoreMonitorAdapter.java
      - copied, changed from r1827287, 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitorAdapter.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/IOMonitor.java
      - copied, changed from r1827287, 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitor.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/IOMonitorAdapter.java
      - copied, changed from r1827287, 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitorAdapter.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/GCJournalFile.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/JournalFile.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/JournalFileReader.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/JournalFileWriter.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/ManifestFile.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/RepositoryLock.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentArchiveEntry.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentArchiveManager.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentArchiveReader.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentArchiveWriter.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentNodeStorePersistence.java
      - copied, changed from r1827287, 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStorePersistence.java
Removed:
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentArchiveManager.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStorePersistence.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitor.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitorAdapter.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitor.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitorAdapter.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java
Modified:
    jackrabbit/oak/trunk/oak-parent/pom.xml
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentTarExplorerBackend.java
    jackrabbit/oak/trunk/oak-segment-tar/pom.xml
    
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/SegmentNodeStoreFactory.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.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/FileReaper.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/FileStoreStats.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreUtil.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/JournalReader.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/LocalGCJournalFile.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/LocalManifestFile.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/Manifest.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ManifestChecker.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsIOMonitor.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/LocalJournalFile.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarManager.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarReader.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.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/TarPersistence.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/file/tar/binaries/BinaryReferencesIndexLoader.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV1.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV2.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexEntry.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/ConsistencyChecker.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/RevisionHistory.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/History.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Utils.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/ManifestCheckerTest.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SizeDeltaGCEstimationTest.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarRevisionsTest.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/TarFilesTest.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderTest.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV1Test.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV2Test.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexWriterTest.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/upgrade/UpgradeIT.java

Modified: jackrabbit/oak/trunk/oak-parent/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-parent/pom.xml?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-parent/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-parent/pom.xml Tue Mar 20 10:53:44 2018
@@ -233,6 +233,8 @@
                   
<filter>!org.apache.jackrabbit.oak.plugins.index.solr.query</filter>
                   
<filter>!org.apache.jackrabbit.oak.plugins.index.solr.server</filter>
                   
<filter>!org.apache.jackrabbit.oak.plugins.index.solr.util</filter>
+                  
<filter>!org.apache.jackrabbit.oak.segment.spi.monitor</filter>
+                  
<filter>!org.apache.jackrabbit.oak.segment.spi.persistence</filter>
                   <filter>*</filter>
                 </filters>
               </configuration>

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentTarExplorerBackend.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentTarExplorerBackend.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentTarExplorerBackend.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentTarExplorerBackend.java
 Tue Mar 20 10:53:44 2018
@@ -47,7 +47,7 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.SegmentId;
 import org.apache.jackrabbit.oak.segment.SegmentNodeState;
 import org.apache.jackrabbit.oak.segment.SegmentNodeStateHelper;
-import 
org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence.JournalFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile;
 import org.apache.jackrabbit.oak.segment.SegmentPropertyState;
 import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
 import org.apache.jackrabbit.oak.segment.file.JournalEntry;

Modified: jackrabbit/oak/trunk/oak-segment-tar/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/pom.xml?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/pom.xml Tue Mar 20 10:53:44 2018
@@ -44,7 +44,10 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Export-Package />
+                        <Export-Package>
+                            org.apache.jackrabbit.oak.segment.spi.monitor,
+                            org.apache.jackrabbit.oak.segment.spi.persistence
+                        </Export-Package>
                         <Embed-Dependency>
                             netty-*,
                             concurrentlinkedhashmap-lru

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=1827291&r1=1827290&r2=1827291&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
 Tue Mar 20 10:53:44 2018
@@ -45,7 +45,6 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.segment.RecordNumbers.Entry;
-import org.apache.jackrabbit.oak.segment.data.SegmentData;
 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/SegmentNodeStoreFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java
 Tue Mar 20 10:53:44 2018
@@ -36,6 +36,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.ReferencePolicyOption;
 import org.apache.jackrabbit.oak.commons.IOUtils;
 import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
+import 
org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStoreProvider;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
 Tue Mar 20 10:53:44 2018
@@ -118,6 +118,7 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.file.FileStoreStatsMBean;
 import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
 import org.apache.jackrabbit.oak.segment.file.MetricsIOMonitor;
+import 
org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
 import org.apache.jackrabbit.oak.spi.cluster.ClusterRepositoryInfo;

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=1827291&r1=1827290&r2=1827291&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
 Tue Mar 20 10:53:44 2018
@@ -44,7 +44,7 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.SegmentIdFactory;
 import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
 import org.apache.jackrabbit.oak.segment.SegmentNodeState;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
+import 
org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence;
 import org.apache.jackrabbit.oak.segment.SegmentNotFoundException;
 import org.apache.jackrabbit.oak.segment.SegmentReader;
 import org.apache.jackrabbit.oak.segment.SegmentStore;
@@ -52,7 +52,7 @@ import org.apache.jackrabbit.oak.segment
 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.spi.monitor.IOMonitor;
 import org.apache.jackrabbit.oak.segment.file.tar.TarFiles;
 import org.apache.jackrabbit.oak.segment.file.tar.TarRecovery;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileReaper.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileReaper.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileReaper.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileReaper.java
 Tue Mar 20 10:53:44 2018
@@ -19,13 +19,12 @@ package org.apache.jackrabbit.oak.segmen
 
 import static com.google.common.collect.Lists.newArrayList;
 
-import java.io.IOException;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 import com.google.common.base.Joiner;
-import org.apache.jackrabbit.oak.segment.SegmentArchiveManager;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

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=1827291&r1=1827290&r2=1827291&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
 Tue Mar 20 10:53:44 2018
@@ -70,7 +70,8 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.Segment;
 import org.apache.jackrabbit.oak.segment.SegmentId;
 import org.apache.jackrabbit.oak.segment.SegmentNodeState;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
+import org.apache.jackrabbit.oak.segment.spi.persistence.RepositoryLock;
+import 
org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence;
 import org.apache.jackrabbit.oak.segment.SegmentNotFoundException;
 import org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener;
 import org.apache.jackrabbit.oak.segment.SegmentWriter;
@@ -116,7 +117,7 @@ public class FileStore extends AbstractF
 
     private final TarFiles tarFiles;
 
-    private final SegmentNodeStorePersistence.RepositoryLock repositoryLock;
+    private final RepositoryLock repositoryLock;
 
     private volatile TarRevisions revisions;
 

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=1827291&r1=1827290&r2=1827291&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
 Tue Mar 20 10:53:44 2018
@@ -40,14 +40,14 @@ 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.SegmentNodeStorePersistence;
+import 
org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence;
 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;
 import org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions;
-import org.apache.jackrabbit.oak.segment.file.tar.IOMonitor;
-import org.apache.jackrabbit.oak.segment.file.tar.IOMonitorAdapter;
+import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor;
+import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter;
 import org.apache.jackrabbit.oak.segment.file.tar.TarPersistence;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.gc.DelegatingGCMonitor;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreStats.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreStats.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreStats.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreStats.java
 Tue Mar 20 10:53:44 2018
@@ -26,7 +26,7 @@ import javax.management.openmbean.Compos
 
 import org.apache.jackrabbit.api.stats.TimeSeries;
 import org.apache.jackrabbit.oak.commons.IOUtils;
-import org.apache.jackrabbit.oak.segment.file.tar.FileStoreMonitor;
+import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor;
 import org.apache.jackrabbit.oak.stats.CounterStats;
 import org.apache.jackrabbit.oak.stats.MeterStats;
 import org.apache.jackrabbit.oak.stats.StatisticsProvider;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreUtil.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreUtil.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreUtil.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreUtil.java
 Tue Mar 20 10:53:44 2018
@@ -21,7 +21,7 @@ import java.io.IOException;
 
 import org.apache.jackrabbit.oak.segment.RecordId;
 import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile;
 import org.apache.jackrabbit.oak.segment.SegmentStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -45,7 +45,7 @@ class FileStoreUtil {
      * found.
      * @throws IOException If an I/O error occurs.
      */
-    static RecordId findPersistedRecordId(SegmentStore store, 
SegmentIdProvider idProvider, SegmentNodeStorePersistence.JournalFile 
journalFile)
+    static RecordId findPersistedRecordId(SegmentStore store, 
SegmentIdProvider idProvider, JournalFile journalFile)
     throws IOException {
         try (JournalReader journalReader = new JournalReader(journalFile)) {
             while (journalReader.hasNext()) {

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=1827291&r1=1827290&r2=1827291&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
 Tue Mar 20 10:53:44 2018
@@ -32,7 +32,7 @@ import javax.annotation.Nonnull;
 
 import com.google.common.base.Joiner;
 import org.apache.jackrabbit.oak.segment.RecordId;
-import 
org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence.GCJournalFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.GCJournalFile;
 import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
 import org.apache.jackrabbit.oak.segment.file.tar.TarPersistence;
 import org.slf4j.Logger;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/JournalReader.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/JournalReader.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/JournalReader.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/JournalReader.java
 Tue Mar 20 10:53:44 2018
@@ -23,7 +23,8 @@ import java.io.Closeable;
 import java.io.IOException;
 import java.util.List;
 
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFileReader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -37,9 +38,9 @@ import com.google.common.collect.Abstrac
 public final class JournalReader extends AbstractIterator<JournalEntry> 
implements Closeable {
     private static final Logger LOG = 
LoggerFactory.getLogger(JournalReader.class);
 
-    private final SegmentNodeStorePersistence.JournalFileReader reader;
+    private final JournalFileReader reader;
 
-    public JournalReader(SegmentNodeStorePersistence.JournalFile journal) 
throws IOException {
+    public JournalReader(JournalFile journal) throws IOException {
         this.reader = journal.openJournalReader();
     }
 

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/LocalGCJournalFile.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/LocalGCJournalFile.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/LocalGCJournalFile.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/LocalGCJournalFile.java
 Tue Mar 20 10:53:44 2018
@@ -18,7 +18,7 @@
  */
 package org.apache.jackrabbit.oak.segment.file;
 
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
+import org.apache.jackrabbit.oak.segment.spi.persistence.GCJournalFile;
 
 import java.io.BufferedWriter;
 import java.io.File;
@@ -34,7 +34,7 @@ import static java.nio.file.StandardOpen
 import static java.nio.file.StandardOpenOption.DSYNC;
 import static java.nio.file.StandardOpenOption.WRITE;
 
-public class LocalGCJournalFile implements 
SegmentNodeStorePersistence.GCJournalFile {
+public class LocalGCJournalFile implements GCJournalFile {
 
     private final File file;
 

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/LocalManifestFile.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/LocalManifestFile.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/LocalManifestFile.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/LocalManifestFile.java
 Tue Mar 20 10:53:44 2018
@@ -18,7 +18,7 @@
  */
 package org.apache.jackrabbit.oak.segment.file;
 
-import 
org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence.ManifestFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.ManifestFile;
 
 import java.io.File;
 import java.io.FileReader;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/Manifest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/Manifest.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/Manifest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/Manifest.java
 Tue Mar 20 10:53:44 2018
@@ -17,8 +17,7 @@
 
 package org.apache.jackrabbit.oak.segment.file;
 
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
-import 
org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence.ManifestFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.ManifestFile;
 
 import java.io.IOException;
 import java.util.Properties;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ManifestChecker.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ManifestChecker.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ManifestChecker.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ManifestChecker.java
 Tue Mar 20 10:53:44 2018
@@ -17,7 +17,7 @@
 
 package org.apache.jackrabbit.oak.segment.file;
 
-import 
org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence.ManifestFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.ManifestFile;
 
 import static com.google.common.base.Preconditions.checkArgument;
 

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsIOMonitor.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsIOMonitor.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsIOMonitor.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsIOMonitor.java
 Tue Mar 20 10:53:44 2018
@@ -24,7 +24,7 @@ import java.io.File;
 
 import javax.annotation.Nonnull;
 
-import org.apache.jackrabbit.oak.segment.file.tar.IOMonitorAdapter;
+import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter;
 import org.apache.jackrabbit.oak.stats.MeterStats;
 import org.apache.jackrabbit.oak.stats.StatisticsProvider;
 import org.apache.jackrabbit.oak.stats.StatsOptions;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java
 Tue Mar 20 10:53:44 2018
@@ -32,7 +32,8 @@ import com.google.common.base.Function;
 import org.apache.jackrabbit.oak.segment.RecordId;
 import org.apache.jackrabbit.oak.segment.Revisions;
 import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile;
+import 
org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence;
 import org.apache.jackrabbit.oak.segment.SegmentStore;
 
 public class ReadOnlyRevisions implements Revisions, Closeable {
@@ -41,7 +42,7 @@ public class ReadOnlyRevisions implement
     private final AtomicReference<RecordId> head;
 
     @Nonnull
-    private final SegmentNodeStorePersistence.JournalFile journalFile;
+    private final JournalFile journalFile;
 
     public ReadOnlyRevisions(@Nonnull SegmentNodeStorePersistence persistence) 
{
         this.journalFile = checkNotNull(persistence).getJournalFile();

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java
 Tue Mar 20 10:53:44 2018
@@ -41,7 +41,9 @@ import com.google.common.base.Supplier;
 import org.apache.jackrabbit.oak.segment.RecordId;
 import org.apache.jackrabbit.oak.segment.Revisions;
 import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFileWriter;
+import 
org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence;
 import org.apache.jackrabbit.oak.segment.SegmentStore;
 import org.apache.jackrabbit.oak.segment.file.tar.TarPersistence;
 import org.slf4j.Logger;
@@ -71,13 +73,13 @@ public class TarRevisions implements Rev
 
     private final SegmentNodeStorePersistence persistence;
 
-    private final SegmentNodeStorePersistence.JournalFile journalFile;
+    private final JournalFile journalFile;
 
     /**
      * The journal file writer. It is protected by {@link #journalFileLock}. 
It becomes
      * {@code null} after it's closed.
      */
-    private volatile SegmentNodeStorePersistence.JournalFileWriter 
journalFileWriter;
+    private volatile JournalFileWriter journalFileWriter;
 
     /**
      * The persisted head of the root journal, used to determine whether the

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/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?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java
 Tue Mar 20 10:53:44 2018
@@ -23,6 +23,9 @@ import static com.google.common.base.Pre
 import javax.annotation.Nonnull;
 
 import com.google.common.base.Objects;
+import org.apache.jackrabbit.oak.segment.file.tar.index.IndexEntry;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveEntry;
+
 /**
  * Instances of this class represent the garbage collection generation related
  * information of a segment. It consists of the segment's generation, its full
@@ -57,6 +60,10 @@ public final class GCGeneration {
         return new GCGeneration(generation, fullGeneration, isCompacted);
     }
 
+    public static GCGeneration newGCGeneration(SegmentArchiveEntry indexEntry) 
{
+        return new GCGeneration(indexEntry.getGeneration(), 
indexEntry.getFullGeneration(), indexEntry.isCompacted());
+    }
+
     private final int generation;
 
     private final int fullGeneration;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/LocalJournalFile.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/LocalJournalFile.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/LocalJournalFile.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/LocalJournalFile.java
 Tue Mar 20 10:53:44 2018
@@ -19,7 +19,9 @@
 package org.apache.jackrabbit.oak.segment.file.tar;
 
 import org.apache.commons.io.input.ReversedLinesFileReader;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFileReader;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFileWriter;
 
 import java.io.File;
 import java.io.IOException;
@@ -27,7 +29,7 @@ import java.io.RandomAccessFile;
 
 import static java.nio.charset.Charset.defaultCharset;
 
-public class LocalJournalFile implements 
SegmentNodeStorePersistence.JournalFile {
+public class LocalJournalFile implements JournalFile {
 
     private final File journalFile;
 
@@ -40,12 +42,12 @@ public class LocalJournalFile implements
     }
 
     @Override
-    public SegmentNodeStorePersistence.JournalFileReader openJournalReader() 
throws IOException {
+    public JournalFileReader openJournalReader() throws IOException {
         return new LocalJournalFileReader(journalFile);
     }
 
     @Override
-    public SegmentNodeStorePersistence.JournalFileWriter openJournalWriter() 
throws IOException {
+    public JournalFileWriter openJournalWriter() throws IOException {
         return new LocalJournalFileWriter(journalFile);
     }
 
@@ -59,7 +61,7 @@ public class LocalJournalFile implements
         return journalFile.exists();
     }
 
-    private static class LocalJournalFileReader implements 
SegmentNodeStorePersistence.JournalFileReader {
+    private static class LocalJournalFileReader implements JournalFileReader {
 
         private final ReversedLinesFileReader journal;
 
@@ -78,7 +80,7 @@ public class LocalJournalFile implements
         }
     }
 
-    private static class LocalJournalFileWriter implements 
SegmentNodeStorePersistence.JournalFileWriter {
+    private static class LocalJournalFileWriter implements JournalFileWriter {
 
         private final RandomAccessFile journalFile;
 

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarManager.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarManager.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarManager.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarManager.java
 Tue Mar 20 10:53:44 2018
@@ -18,8 +18,12 @@
  */
 package org.apache.jackrabbit.oak.segment.file.tar;
 
-import org.apache.jackrabbit.oak.segment.SegmentArchiveManager;
+import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor;
+import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager;
 import org.apache.jackrabbit.oak.segment.file.tar.index.Index;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveReader;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarReader.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarReader.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarReader.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarReader.java
 Tue Mar 20 10:53:44 2018
@@ -19,14 +19,15 @@
 package org.apache.jackrabbit.oak.segment.file.tar;
 
 import com.google.common.base.Stopwatch;
-import org.apache.jackrabbit.oak.segment.SegmentArchiveManager;
-import 
org.apache.jackrabbit.oak.segment.file.tar.binaries.BinaryReferencesIndex;
+import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor;
 import 
org.apache.jackrabbit.oak.segment.file.tar.binaries.BinaryReferencesIndexLoader;
 import 
org.apache.jackrabbit.oak.segment.file.tar.binaries.InvalidBinaryReferencesIndexException;
 import org.apache.jackrabbit.oak.segment.file.tar.index.Index;
 import org.apache.jackrabbit.oak.segment.file.tar.index.IndexEntry;
 import org.apache.jackrabbit.oak.segment.file.tar.index.IndexLoader;
 import org.apache.jackrabbit.oak.segment.file.tar.index.InvalidIndexException;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveEntry;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveReader;
 import org.apache.jackrabbit.oak.segment.util.ReaderAtEnd;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,16 +36,15 @@ import java.io.File;
 import java.io.IOException;
 import java.io.RandomAccessFile;
 import java.nio.ByteBuffer;
+import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
-import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
 import static 
org.apache.jackrabbit.oak.segment.file.tar.SegmentTarWriter.getPaddingSize;
 import static 
org.apache.jackrabbit.oak.segment.file.tar.TarConstants.BLOCK_SIZE;
 import static 
org.apache.jackrabbit.oak.segment.file.tar.index.IndexLoader.newIndexLoader;
 
-public class SegmentTarReader implements 
SegmentArchiveManager.SegmentArchiveReader {
+public class SegmentTarReader implements SegmentArchiveReader {
 
     private static final Logger log = 
LoggerFactory.getLogger(SegmentTarReader.class);
 
@@ -86,8 +86,18 @@ public class SegmentTarReader implements
     }
 
     @Override
-    public Index getIndex() {
-        return index;
+    public boolean containsSegment(long msb, long lsb) {
+        return index.findEntry(msb, lsb) != -1;
+    }
+
+    @Override
+    public List<SegmentArchiveEntry> listSegments() {
+        IndexEntry[] entries = new IndexEntry[index.count()];
+        for (int i = 0; i < index.count(); i++) {
+            entries[i] = index.entry(i);
+        }
+        Arrays.sort(entries, IndexEntry.POSITION_ORDER);
+        return Arrays.asList(entries);
     }
 
     public static Index loadAndValidateIndex(RandomAccessFile file, String 
name) throws IOException {
@@ -119,36 +129,31 @@ public class SegmentTarReader implements
     }
 
     @Override
-    public Map<UUID, List<UUID>> getGraph() throws IOException {
-        ByteBuffer graph = loadGraph();
-        if (graph == null) {
-            return null;
-        } else {
-            return GraphLoader.parseGraph(graph);
-        }
+    public ByteBuffer getGraph() throws IOException {
+        int end = access.length() - 2 * BLOCK_SIZE - getIndexEntrySize();
+        ByteBuffer graph = GraphLoader.loadGraph((whence, amount) -> 
access.read(end - whence, amount));
+        hasGraph = graph != null;
+        return graph;
     }
 
     @Override
     public boolean hasGraph() {
         if (hasGraph == null) {
             try {
-                loadGraph();
+                getGraph();
             } catch (IOException ignore) { }
         }
         return hasGraph;
     }
 
-    private ByteBuffer loadGraph() throws IOException {
-        int end = access.length() - 2 * BLOCK_SIZE - getIndexEntrySize();
-        ByteBuffer graph = GraphLoader.loadGraph((whence, amount) -> 
access.read(end - whence, amount));
-        hasGraph = graph != null;
-        return graph;
-    }
-
     @Override
-    public BinaryReferencesIndex getBinaryReferences() throws IOException, 
InvalidBinaryReferencesIndexException {
-        int end = access.length() - 2 * BLOCK_SIZE - getIndexEntrySize() - 
getGraphEntrySize();
-        return BinaryReferencesIndexLoader.loadBinaryReferencesIndex((whence, 
size) -> access.read(end - whence, size));
+    public ByteBuffer getBinaryReferences() throws IOException {
+        try {
+            int end = access.length() - 2 * BLOCK_SIZE - getIndexEntrySize() - 
getGraphEntrySize();
+            return 
BinaryReferencesIndexLoader.loadBinaryReferencesIndex((whence, amount) -> 
access.read(end - whence, amount));
+        } catch (InvalidBinaryReferencesIndexException e) {
+            throw new IOException(e);
+        }
     }
 
     @Override
@@ -179,7 +184,7 @@ public class SegmentTarReader implements
         ByteBuffer buffer;
 
         try {
-            buffer = loadGraph();
+            buffer = getGraph();
         } catch (IOException e) {
             log.warn("Exception while loading pre-compiled tar graph", e);
             return 0;
@@ -191,6 +196,4 @@ public class SegmentTarReader implements
 
         return getEntrySize(buffer.getInt(buffer.limit() - 8));
     }
-
-
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.java
 Tue Mar 20 10:53:44 2018
@@ -19,7 +19,12 @@
 package org.apache.jackrabbit.oak.segment.file.tar;
 
 import com.google.common.base.Stopwatch;
-import org.apache.jackrabbit.oak.segment.SegmentArchiveManager;
+import org.apache.jackrabbit.oak.segment.file.tar.index.IndexWriter;
+import org.apache.jackrabbit.oak.segment.file.tar.index.IndexEntry;
+import org.apache.jackrabbit.oak.segment.file.tar.index.SimpleIndexEntry;
+import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor;
+import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -28,9 +33,10 @@ import java.io.IOException;
 import java.io.RandomAccessFile;
 import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
+import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.zip.CRC32;
 
@@ -38,7 +44,7 @@ import static com.google.common.base.Cha
 import static com.google.common.base.Preconditions.checkState;
 import static 
org.apache.jackrabbit.oak.segment.file.tar.TarConstants.BLOCK_SIZE;
 
-public class SegmentTarWriter implements 
SegmentArchiveManager.SegmentArchiveWriter {
+public class SegmentTarWriter implements SegmentArchiveWriter {
 
     private static final Logger log = 
LoggerFactory.getLogger(SegmentTarWriter.class);
 
@@ -57,7 +63,18 @@ public class SegmentTarWriter implements
     private final IOMonitor ioMonitor;
 
     /**
-     * File handle. Initialized lazily in {@link #writeSegment(long, long, 
byte[], int, int, GCGeneration)}
+     * Map of the entries that have already been written. Used by the
+     * {@link #containsSegment(long, long)} and {@link #readSegment(long, 
long)}
+     * methods to retrieve data from this file while it's still being written,
+     * and finally by the {@link #close()} method to generate the tar index.
+     * The map is ordered in the order that entries have been written.
+     * <p>
+     * The MutableIndex implementation is thread-safe.
+     */
+    private final Map<UUID, IndexEntry> index = 
Collections.synchronizedMap(new LinkedHashMap<>());
+
+    /**
+     * File handle. Initialized lazily in {@link #writeSegment(long, long, 
byte[], int, int, int, int, boolean)}
      * to avoid creating an extra empty file when just reading from the 
repository.
      * Should only be accessed from synchronized code.
      */
@@ -74,7 +91,7 @@ public class SegmentTarWriter implements
     }
 
     @Override
-    public TarEntry writeSegment(long msb, long lsb, byte[] data, int offset, 
int size, GCGeneration generation) throws IOException {
+    public void writeSegment(long msb, long lsb, byte[] data, int offset, int 
size, int generation, int fullGeneration, boolean compacted) throws IOException 
{
         UUID uuid = new UUID(msb, lsb);
         CRC32 checksum = new CRC32();
         checksum.update(data, offset, size);
@@ -110,26 +127,25 @@ public class SegmentTarWriter implements
 
         length = currentLength;
 
-        return new TarEntry(msb, lsb, (int) dataOffset, size, generation);
+        index.put(new UUID(msb, lsb), new SimpleIndexEntry(msb, lsb, (int) 
dataOffset, size, generation, fullGeneration, compacted));
     }
 
     @Override
-    public ByteBuffer readSegment(TarEntry tarEntry) throws IOException {
+    public ByteBuffer readSegment(long msb, long lsb) throws IOException {
+        IndexEntry indexEntry = index.get(new UUID(msb, lsb));
+        if (indexEntry == null) {
+            return null;
+        }
         checkState(channel != null); // implied by entry != null
-        ByteBuffer data = ByteBuffer.allocate(tarEntry.size());
-        channel.read(data, tarEntry.offset());
+        ByteBuffer data = ByteBuffer.allocate(indexEntry.getLength());
+        channel.read(data, indexEntry.getPosition());
         data.rewind();
         return data;
     }
 
     @Override
-    public void writeIndex(byte[] data) throws IOException {
-        byte[] header = newEntryHeader(file.getName() + ".idx", data.length);
-        access.write(header);
-        access.write(data);
-        monitor.written(header.length + data.length);
-
-        length = access.getFilePointer();
+    public boolean containsSegment(long msb, long lsb) {
+        return index.containsKey(new UUID(msb, lsb));
     }
 
     @Override
@@ -165,8 +181,35 @@ public class SegmentTarWriter implements
         return length;
     }
 
+    private void writeIndex() throws IOException {
+        IndexWriter writer = IndexWriter.newIndexWriter(BLOCK_SIZE);
+
+        for (IndexEntry entry : index.values()) {
+            writer.addEntry(
+                    entry.getMsb(),
+                    entry.getLsb(),
+                    entry.getPosition(),
+                    entry.getLength(),
+                    entry.getGeneration(),
+                    entry.getFullGeneration(),
+                    entry.isCompacted()
+            );
+        }
+
+        byte[] data = writer.write();
+
+        byte[] header = newEntryHeader(file.getName() + ".idx", data.length);
+        access.write(header);
+        access.write(data);
+        monitor.written(header.length + data.length);
+
+        length = access.getFilePointer();
+    }
+
     @Override
     public void close() throws IOException {
+        writeIndex();
+
         access.write(ZERO_BYTES);
         access.write(ZERO_BYTES);
         access.close();

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=1827291&r1=1827290&r2=1827291&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
 Tue Mar 20 10:53:44 2018
@@ -51,8 +51,11 @@ import javax.annotation.Nonnull;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
-import org.apache.jackrabbit.oak.segment.SegmentArchiveManager;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
+import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor;
+import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter;
+import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager;
+import 
org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence;
 import org.apache.jackrabbit.oak.segment.file.FileReaper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarPersistence.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarPersistence.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarPersistence.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarPersistence.java
 Tue Mar 20 10:53:44 2018
@@ -19,9 +19,14 @@
 package org.apache.jackrabbit.oak.segment.file.tar;
 
 import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.oak.segment.SegmentArchiveManager;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence;
-import org.apache.jackrabbit.oak.segment.file.GCJournal;
+import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor;
+import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor;
+import org.apache.jackrabbit.oak.segment.spi.persistence.GCJournalFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.ManifestFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.RepositoryLock;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager;
+import 
org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence;
 import org.apache.jackrabbit.oak.segment.file.LocalGCJournalFile;
 import org.apache.jackrabbit.oak.segment.file.LocalManifestFile;
 

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=1827291&r1=1827290&r2=1827291&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
 Tue Mar 20 10:53:44 2018
@@ -30,7 +30,6 @@ import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -40,15 +39,18 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.UUID;
 import java.util.function.Consumer;
+import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 
 import com.google.common.base.Predicate;
-import org.apache.jackrabbit.oak.segment.SegmentArchiveManager;
+import 
org.apache.jackrabbit.oak.segment.file.tar.binaries.BinaryReferencesIndexLoader;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveEntry;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager;
 import 
org.apache.jackrabbit.oak.segment.file.tar.binaries.BinaryReferencesIndex;
 import 
org.apache.jackrabbit.oak.segment.file.tar.binaries.InvalidBinaryReferencesIndexException;
-import org.apache.jackrabbit.oak.segment.file.tar.index.Index;
 import org.apache.jackrabbit.oak.segment.file.tar.index.IndexEntry;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveReader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -232,7 +234,7 @@ public class TarReader implements Closea
     private static TarReader openFirstFileWithValidIndex(List<String> 
archives, SegmentArchiveManager archiveManager) {
         for (String name : archives) {
             try {
-                SegmentArchiveManager.SegmentArchiveReader reader = 
archiveManager.open(name);
+                SegmentArchiveReader reader = archiveManager.open(name);
                 if (reader != null) {
                     for (String other : archives) {
                         if (other != name) {
@@ -252,16 +254,19 @@ public class TarReader implements Closea
 
     private final SegmentArchiveManager archiveManager;
 
-    private final SegmentArchiveManager.SegmentArchiveReader archive;
+    private final SegmentArchiveReader archive;
 
-    private final Index index;
+    private final Set<UUID> segmentUUIDs;
 
     private volatile boolean hasGraph;
 
-    private TarReader(SegmentArchiveManager archiveManager, 
SegmentArchiveManager.SegmentArchiveReader archive) {
+    private TarReader(SegmentArchiveManager archiveManager, 
SegmentArchiveReader archive) {
         this.archiveManager = archiveManager;
         this.archive = archive;
-        this.index = archive.getIndex();
+        this.segmentUUIDs = archive.listSegments()
+                .stream()
+                .map(e -> new UUID(e.getMsb(), e.getLsb()))
+                .collect(Collectors.toSet());
     }
 
     long size() {
@@ -275,7 +280,7 @@ public class TarReader implements Closea
      * @return An instance of {@link Set}.
      */
     Set<UUID> getUUIDs() {
-        return index.getUUIDs();
+        return segmentUUIDs;
     }
 
     /**
@@ -287,7 +292,7 @@ public class TarReader implements Closea
      * otherwise.
      */
     boolean containsEntry(long msb, long lsb) {
-        return findEntry(msb, lsb) != -1;
+        return archive.containsSegment(msb, lsb);
     }
 
     /**
@@ -306,41 +311,14 @@ public class TarReader implements Closea
     }
 
     /**
-     * Find the position of the given entry in this TAR file.
-     *
-     * @param msb The most significant bits of the entry identifier.
-     * @param lsb The least significant bits of the entry identifier.
-     * @return The position of the entry in the TAR file, or {@code -1} if the
-     * entry is not found.
-     */
-    private int findEntry(long msb, long lsb) {
-        return index.findEntry(msb, lsb);
-    }
-
-    /**
      * Read the entries in this TAR file.
      *
-     * @return An array of {@link TarEntry}.
+     * @return An array of {@link IndexEntry}.
      */
     @Nonnull
-    TarEntry[] getEntries() {
-        TarEntry[] entries = new TarEntry[index.count()];
-        for (int i = 0; i < entries.length; i++) {
-            IndexEntry e = index.entry(i);
-            entries[i]  = new TarEntry(
-                    e.getMsb(),
-                    e.getLsb(),
-                    e.getPosition(),
-                    e.getLength(),
-                    newGCGeneration(
-                            e.getGeneration(),
-                            e.getFullGeneration(),
-                            e.isCompacted()
-                    )
-            );
-        }
-        Arrays.sort(entries, TarEntry.OFFSET_ORDER);
-        return entries;
+    SegmentArchiveEntry[] getEntries() {
+        List<SegmentArchiveEntry> entryList = archive.listSegments();
+        return entryList.toArray(new SegmentArchiveEntry[entryList.size()]);
     }
 
     /**
@@ -428,16 +406,17 @@ public class TarReader implements Closea
      */
     void mark(Set<UUID> references, Set<UUID> reclaimable, CleanupContext 
context) throws IOException {
         Map<UUID, List<UUID>> graph = getGraph();
-        TarEntry[] entries = getEntries();
+        SegmentArchiveEntry[] entries = getEntries();
         for (int i = entries.length - 1; i >= 0; i--) {
             // A bulk segments is *always* written before any data segment 
referencing it.
             // Backward iteration ensures we see all references to bulk 
segments before
             // we see the bulk segment itself. Therefore we can remove a bulk 
reference
             // from the bulkRefs set once we encounter it, which save us some 
memory and
             // CPU on subsequent look-ups.
-            TarEntry entry = entries[i];
-            UUID id = new UUID(entry.msb(), entry.lsb());
-            if (context.shouldReclaim(id, entry.generation(), 
references.remove(id))) {
+            SegmentArchiveEntry entry = entries[i];
+            UUID id = new UUID(entry.getMsb(), entry.getLsb());
+            GCGeneration generation = GCGeneration.newGCGeneration(entry);
+            if (context.shouldReclaim(id, generation, references.remove(id))) {
                 reclaimable.add(id);
             } else {
                 for (UUID refId : getReferences(id, graph)) {
@@ -493,16 +472,16 @@ public class TarReader implements Closea
         int beforeSize = 0;
         int afterCount = 0;
 
-        TarEntry[] entries = getEntries();
+        SegmentArchiveEntry[] entries = getEntries();
         for (int i = 0; i < entries.length; i++) {
-            TarEntry entry = entries[i];
-            beforeSize += archive.getEntrySize(entry.size());
-            UUID id = new UUID(entry.msb(), entry.lsb());
+            SegmentArchiveEntry entry = entries[i];
+            beforeSize += archive.getEntrySize(entry.getLength());
+            UUID id = new UUID(entry.getMsb(), entry.getLsb());
             if (reclaim.contains(id)) {
                 cleaned.add(id);
                 entries[i] = null;
             } else {
-                afterSize += archive.getEntrySize(entry.size());
+                afterSize += archive.getEntrySize(entry.getLength());
                 afterCount += 1;
             }
         }
@@ -535,12 +514,12 @@ public class TarReader implements Closea
 
         log.debug("Writing new generation {}", newFile);
         TarWriter writer = new TarWriter(archiveManager, newFile);
-        for (TarEntry entry : entries) {
+        for (SegmentArchiveEntry entry : entries) {
             if (entry != null) {
-                long msb = entry.msb();
-                long lsb = entry.lsb();
-                int size = entry.size();
-                GCGeneration gen = entry.generation();
+                long msb = entry.getMsb();
+                long lsb = entry.getLsb();
+                int size = entry.getLength();
+                GCGeneration gen = GCGeneration.newGCGeneration(entry);
                 byte[] data = new byte[size];
                 archive.readSegment(msb, lsb).get(data);
                 writer.writeEntry(msb, lsb, data, 0, size, gen);
@@ -608,7 +587,12 @@ public class TarReader implements Closea
      * @return The parsed graph, or {@code null} if one was not found.
      */
     Map<UUID, List<UUID>> getGraph() throws IOException {
-        return archive.getGraph();
+        ByteBuffer buffer = archive.getGraph();
+        if (buffer == null) {
+            return null;
+        } else {
+            return GraphLoader.parseGraph(buffer);
+        }
     }
 
     private boolean hasGraph() {
@@ -629,7 +613,7 @@ public class TarReader implements Closea
     BinaryReferencesIndex getBinaryReferences() {
         BinaryReferencesIndex index = null;
         try {
-            index = archive.getBinaryReferences();
+            index = 
BinaryReferencesIndexLoader.parseBinaryReferencesIndex(archive.getBinaryReferences());
         } catch (InvalidBinaryReferencesIndexException | IOException e) {
             log.warn("Exception while loading binary reference", e);
         }

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=1827291&r1=1827290&r2=1827291&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
 Tue Mar 20 10:53:44 2018
@@ -23,10 +23,8 @@ import static com.google.common.base.Pre
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.Maps.newHashMap;
-import static com.google.common.collect.Maps.newLinkedHashMap;
 import static com.google.common.collect.Sets.newHashSet;
 import static java.lang.String.format;
-import static 
org.apache.jackrabbit.oak.segment.file.tar.TarConstants.BLOCK_SIZE;
 import static 
org.apache.jackrabbit.oak.segment.file.tar.TarConstants.FILE_NAME_FORMAT;
 import static 
org.apache.jackrabbit.oak.segment.file.tar.TarConstants.GRAPH_MAGIC;
 import static 
org.apache.jackrabbit.oak.segment.file.tar.binaries.BinaryReferencesIndexWriter.newBinaryReferencesIndexWriter;
@@ -40,9 +38,9 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.zip.CRC32;
 
-import org.apache.jackrabbit.oak.segment.SegmentArchiveManager;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager;
 import 
org.apache.jackrabbit.oak.segment.file.tar.binaries.BinaryReferencesIndexWriter;
-import org.apache.jackrabbit.oak.segment.file.tar.index.IndexWriter;
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -64,17 +62,6 @@ class TarWriter implements Closeable {
     private boolean closed = false;
 
     /**
-     * Map of the entries that have already been written. Used by the
-     * {@link #containsEntry(long, long)} and {@link #readEntry(long, long)}
-     * methods to retrieve data from this file while it's still being written,
-     * and finally by the {@link #close()} method to generate the tar index.
-     * The map is ordered in the order that entries have been written.
-     * <p>
-     * Should only be accessed from synchronized code.
-     */
-    private final Map<UUID, TarEntry> index = newLinkedHashMap();
-
-    /**
      * List of binary references contained in this TAR file.
      */
     private final BinaryReferencesIndexWriter binaryReferences = 
newBinaryReferencesIndexWriter();
@@ -86,7 +73,7 @@ class TarWriter implements Closeable {
 
     private final SegmentArchiveManager archiveManager;
 
-    private final SegmentArchiveManager.SegmentArchiveWriter archive;
+    private final SegmentArchiveWriter archive;
 
     /** This object is used as an additional
      *  synchronization point by {@link #flush()} and {@link #close()} to
@@ -112,7 +99,7 @@ class TarWriter implements Closeable {
 
     synchronized boolean containsEntry(long msb, long lsb) {
         checkState(!closed);
-        return index.containsKey(new UUID(msb, lsb));
+        return archive.containsSegment(msb, lsb);
     }
 
     /**
@@ -124,16 +111,10 @@ class TarWriter implements Closeable {
      * @return the byte buffer, or null if not in this file
      */
     ByteBuffer readEntry(long msb, long lsb) throws IOException {
-        TarEntry entry;
         synchronized (this) {
             checkState(!closed);
-            entry = index.get(new UUID(msb, lsb));
-        }
-        if (entry != null) {
-            return archive.readSegment(entry);
-        } else {
-            return null;
         }
+        return archive.readSegment(msb, lsb);
     }
 
     long writeEntry(long msb, long lsb, byte[] data, int offset, int size, 
GCGeneration generation) throws IOException {
@@ -143,11 +124,10 @@ class TarWriter implements Closeable {
         synchronized (this) {
             checkState(!closed);
 
-            TarEntry entry = archive.writeSegment(msb, lsb, data, offset, 
size, generation);
+            archive.writeSegment(msb, lsb, data, offset, size, 
generation.getGeneration(), generation.getFullGeneration(), 
generation.isCompacted());
             long currentLength = archive.getLength();
 
             checkState(currentLength <= Integer.MAX_VALUE);
-            index.put(new UUID(msb, lsb), entry);
 
             return currentLength;
         }
@@ -219,7 +199,6 @@ class TarWriter implements Closeable {
         synchronized (closeMonitor) {
             writeBinaryReferences();
             writeGraph();
-            writeIndex();
 
             archive.close();
         }
@@ -311,25 +290,6 @@ class TarWriter implements Closeable {
         archive.writeGraph(buffer.array());
     }
 
-    private void writeIndex() throws IOException {
-        IndexWriter writer = IndexWriter.newIndexWriter(BLOCK_SIZE);
-
-        for (TarEntry entry : index.values()) {
-            writer.addEntry(
-                    entry.msb(),
-                    entry.lsb(),
-                    entry.offset(),
-                    entry.size(),
-                    entry.generation().getGeneration(),
-                    entry.generation().getFullGeneration(),
-                    entry.generation().isCompacted()
-            );
-        }
-
-        byte[] index = writer.write();
-        archive.writeIndex(index);
-    }
-
     synchronized long fileLength() {
         return archive.getLength();
     }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoader.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoader.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoader.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoader.java
 Tue Mar 20 10:53:44 2018
@@ -18,6 +18,7 @@
 package org.apache.jackrabbit.oak.segment.file.tar.binaries;
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 
 import org.apache.jackrabbit.oak.segment.util.ReaderAtEnd;
 
@@ -40,7 +41,7 @@ public class BinaryReferencesIndexLoader
      * @throws InvalidBinaryReferencesIndexException if the index is invalid or
      *                                               malformed.
      */
-    public static BinaryReferencesIndex loadBinaryReferencesIndex(ReaderAtEnd 
reader) throws IOException, InvalidBinaryReferencesIndexException {
+    public static ByteBuffer loadBinaryReferencesIndex(ReaderAtEnd reader) 
throws IOException, InvalidBinaryReferencesIndexException {
         switch (readMagic(reader)) {
             case BinaryReferencesIndexLoaderV1.MAGIC:
                 return 
BinaryReferencesIndexLoaderV1.loadBinaryReferencesIndex(reader);
@@ -51,8 +52,25 @@ public class BinaryReferencesIndexLoader
         }
     }
 
+    public static BinaryReferencesIndex parseBinaryReferencesIndex(ByteBuffer 
buffer) throws InvalidBinaryReferencesIndexException {
+        switch (readMagic(buffer)) {
+            case BinaryReferencesIndexLoaderV1.MAGIC:
+                return 
BinaryReferencesIndexLoaderV1.parseBinaryReferencesIndex(buffer);
+            case BinaryReferencesIndexLoaderV2.MAGIC:
+                return 
BinaryReferencesIndexLoaderV2.parseBinaryReferencesIndex(buffer);
+            default:
+                throw new InvalidBinaryReferencesIndexException("Unrecognized 
magic number");
+        }
+    }
+
     private static int readMagic(ReaderAtEnd reader) throws IOException {
         return reader.readAtEnd(Integer.BYTES, Integer.BYTES).getInt();
     }
 
+    private static int readMagic(ByteBuffer buffer) {
+        buffer.position(buffer.limit() - Integer.BYTES);
+        int magic = buffer.getInt();
+        buffer.rewind();
+        return magic;
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV1.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV1.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV1.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV1.java
 Tue Mar 20 10:53:44 2018
@@ -35,7 +35,7 @@ class BinaryReferencesIndexLoaderV1 {
 
     static final int FOOTER_SIZE = 16;
 
-    static BinaryReferencesIndex loadBinaryReferencesIndex(ReaderAtEnd reader) 
throws IOException, InvalidBinaryReferencesIndexException {
+    static ByteBuffer loadBinaryReferencesIndex(ReaderAtEnd reader) throws 
IOException, InvalidBinaryReferencesIndexException {
         ByteBuffer meta = reader.readAtEnd(FOOTER_SIZE, FOOTER_SIZE);
 
         int crc32 = meta.getInt();
@@ -53,18 +53,41 @@ class BinaryReferencesIndexLoaderV1 {
             throw new InvalidBinaryReferencesIndexException("Invalid size");
         }
 
-        ByteBuffer buffer = reader.readAtEnd(size, size - FOOTER_SIZE);
+        return reader.readAtEnd(size, size);
+    }
+
+    public static BinaryReferencesIndex parseBinaryReferencesIndex(ByteBuffer 
buffer) throws InvalidBinaryReferencesIndexException {
+        ByteBuffer data = buffer.slice();
+        data.limit(data.limit() - FOOTER_SIZE);
+
+        buffer.position(buffer.limit() - FOOTER_SIZE);
+        ByteBuffer meta = buffer.slice();
+
+        int crc32 = meta.getInt();
+        int count = meta.getInt();
+        int size = meta.getInt();
+        int magic = meta.getInt();
+
+        if (magic != MAGIC) {
+            throw new InvalidBinaryReferencesIndexException("Invalid magic 
number");
+        }
+        if (count < 0) {
+            throw new InvalidBinaryReferencesIndexException("Invalid count");
+        }
+        if (size < count * 22 + 16) {
+            throw new InvalidBinaryReferencesIndexException("Invalid size");
+        }
 
         CRC32 checksum = new CRC32();
-        buffer.mark();
-        checksum.update(buffer);
-        buffer.reset();
+        data.mark();
+        checksum.update(data);
+        data.reset();
 
         if ((int) (checksum.getValue()) != crc32) {
             throw new InvalidBinaryReferencesIndexException("Invalid 
checksum");
         }
 
-        return new BinaryReferencesIndex(parseBinaryReferencesIndex(count, 
buffer));
+        return new BinaryReferencesIndex(parseBinaryReferencesIndex(count, 
data));
     }
 
     private static Map<Generation, Map<UUID, Set<String>>> 
parseBinaryReferencesIndex(int count, ByteBuffer buffer) {
@@ -123,5 +146,4 @@ class BinaryReferencesIndexLoaderV1 {
         buffer.get(data);
         return new String(data, Charsets.UTF_8);
     }
-
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV2.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV2.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV2.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/binaries/BinaryReferencesIndexLoaderV2.java
 Tue Mar 20 10:53:44 2018
@@ -35,7 +35,7 @@ class BinaryReferencesIndexLoaderV2 {
 
     static final int FOOTER_SIZE = 16;
 
-    static BinaryReferencesIndex loadBinaryReferencesIndex(ReaderAtEnd reader) 
throws IOException, InvalidBinaryReferencesIndexException {
+    static ByteBuffer loadBinaryReferencesIndex(ReaderAtEnd reader) throws 
IOException, InvalidBinaryReferencesIndexException {
         ByteBuffer meta = reader.readAtEnd(FOOTER_SIZE, FOOTER_SIZE);
 
         int crc32 = meta.getInt();
@@ -53,20 +53,41 @@ class BinaryReferencesIndexLoaderV2 {
             throw new InvalidBinaryReferencesIndexException("Invalid size");
         }
 
-        ByteBuffer buffer = reader.readAtEnd(size, size - FOOTER_SIZE);
+        return reader.readAtEnd(size, size);
+    }
+
+    public static BinaryReferencesIndex parseBinaryReferencesIndex(ByteBuffer 
buffer) throws InvalidBinaryReferencesIndexException {
+        ByteBuffer data = buffer.slice();
+        data.limit(data.limit() - FOOTER_SIZE);
+
+        buffer.position(buffer.limit() - FOOTER_SIZE);
+        ByteBuffer meta = buffer.slice();
+
+        int crc32 = meta.getInt();
+        int count = meta.getInt();
+        int size = meta.getInt();
+        int magic = meta.getInt();
+
+        if (magic != MAGIC) {
+            throw new InvalidBinaryReferencesIndexException("Invalid magic 
number");
+        }
+        if (count < 0) {
+            throw new InvalidBinaryReferencesIndexException("Invalid count");
+        }
+        if (size < count * 22 + 16) {
+            throw new InvalidBinaryReferencesIndexException("Invalid size");
+        }
 
         CRC32 checksum = new CRC32();
-        byte[] data = new byte[size - FOOTER_SIZE];
-        buffer.mark();
-        buffer.get(data);
-        buffer.reset();
+        data.mark();
         checksum.update(data);
+        data.reset();
 
         if ((int) (checksum.getValue()) != crc32) {
             throw new InvalidBinaryReferencesIndexException("Invalid 
checksum");
         }
 
-        return new BinaryReferencesIndex(parseBinaryReferencesIndex(count, 
buffer));
+        return new BinaryReferencesIndex(parseBinaryReferencesIndex(count, 
data));
     }
 
     private static Map<Generation, Map<UUID, Set<String>>> 
parseBinaryReferencesIndex(int count, ByteBuffer buffer) {
@@ -127,5 +148,4 @@ class BinaryReferencesIndexLoaderV2 {
         buffer.get(data);
         return new String(data, Charsets.UTF_8);
     }
-
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexEntry.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexEntry.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexEntry.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexEntry.java
 Tue Mar 20 10:53:44 2018
@@ -17,10 +17,14 @@
 
 package org.apache.jackrabbit.oak.segment.file.tar.index;
 
+import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveEntry;
+
+import java.util.Comparator;
+
 /**
  * An entry in the index of entries of a TAR file.
  */
-public interface IndexEntry {
+public interface IndexEntry extends SegmentArchiveEntry {
 
     /**
      * Return the most significant bits of the identifier of this entry.
@@ -71,4 +75,16 @@ public interface IndexEntry {
      */
     boolean isCompacted();
 
+    Comparator<IndexEntry> POSITION_ORDER = new Comparator<IndexEntry>() {
+        @Override
+        public int compare(IndexEntry a, IndexEntry b) {
+            if (a.getPosition() > b.getPosition()) {
+                return 1;
+            } else if (a.getPosition() < b.getPosition()) {
+                return -1;
+            } else {
+                return 0;
+            }
+        }
+    };
 }

Added: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/SimpleIndexEntry.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/SimpleIndexEntry.java?rev=1827291&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/SimpleIndexEntry.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/SimpleIndexEntry.java
 Tue Mar 20 10:53:44 2018
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.segment.file.tar.index;
+
+public class SimpleIndexEntry implements IndexEntry {
+
+    private final long msb;
+
+    private final long lsb;
+
+    private final int position;
+
+    private final int length;
+
+    private final int generation;
+
+    private final int fullGeneration;
+
+    private final boolean compacted;
+
+    public SimpleIndexEntry(long msb, long lsb, int position, int length, int 
generation, int fullGeneration, boolean compacted) {
+        this.msb = msb;
+        this.lsb = lsb;
+        this.position = position;
+        this.length = length;
+        this.generation = generation;
+        this.fullGeneration = fullGeneration;
+        this.compacted = compacted;
+    }
+
+    @Override
+    public long getMsb() {
+        return msb;
+    }
+
+    @Override
+    public long getLsb() {
+        return lsb;
+    }
+
+    @Override
+    public int getPosition() {
+        return position;
+    }
+
+    @Override
+    public int getLength() {
+        return length;
+    }
+
+    @Override
+    public int getGeneration() {
+        return generation;
+    }
+
+    @Override
+    public int getFullGeneration() {
+        return fullGeneration;
+    }
+
+    @Override
+    public boolean isCompacted() {
+        return compacted;
+    }
+}

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/ConsistencyChecker.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/ConsistencyChecker.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/ConsistencyChecker.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/ConsistencyChecker.java
 Tue Mar 20 10:53:44 2018
@@ -59,7 +59,7 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.file.JournalEntry;
 import org.apache.jackrabbit.oak.segment.file.JournalReader;
 import org.apache.jackrabbit.oak.segment.file.ReadOnlyFileStore;
-import org.apache.jackrabbit.oak.segment.file.tar.IOMonitorAdapter;
+import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter;
 import org.apache.jackrabbit.oak.segment.file.tar.LocalJournalFile;
 import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.oak.spi.state.NodeState;

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/RevisionHistory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/RevisionHistory.java?rev=1827291&r1=1827290&r2=1827291&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/RevisionHistory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/RevisionHistory.java
 Tue Mar 20 10:53:44 2018
@@ -36,7 +36,7 @@ import com.google.common.collect.Iterato
 import org.apache.jackrabbit.oak.json.BlobSerializer;
 import org.apache.jackrabbit.oak.json.JsonSerializer;
 import org.apache.jackrabbit.oak.segment.SegmentNodeState;
-import 
org.apache.jackrabbit.oak.segment.SegmentNodeStorePersistence.JournalFile;
+import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile;
 import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
 import org.apache.jackrabbit.oak.segment.file.JournalEntry;
 import org.apache.jackrabbit.oak.segment.file.JournalReader;


Reply via email to