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;