You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by fr...@apache.org on 2016/08/15 12:35:20 UTC
svn commit: r1756374 [1/2] - in /jackrabbit/oak/trunk:
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/
oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/
oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/
oak-run/src/main/java/org/...
Author: frm
Date: Mon Aug 15 12:35:19 2016
New Revision: 1756374
URL: http://svn.apache.org/viewvc?rev=1756374&view=rev
Log:
OAK-4295 - Add a manifest file in the root folder of the segment store
Added:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/InvalidFileStoreVersionException.java (with props)
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/InvalidFileStoreVersionException.java (with props)
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/LargeOperationIT.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferenceBinaryIT.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RefreshOnGCTest.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/Checkpoints.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/SegmentCheckpoints.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentExplorerBackend.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/segment/FileStoreHelper.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreRevisionRecovery.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/SegmentUtils.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/TextExtractorMain.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentUtils.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.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/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/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/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ExternalBlobIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/HeavyWriteIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentGraphTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentOverflowExceptionIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentSizeTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SegmentReferenceLimitTestIT.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/migration/ExternalToExternalMigrationTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/migration/SegmentToExternalMigrationTest.java
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/tooling/ConsistencyChecker.java
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/tooling/RevisionHistory.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackupTest.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionAndCleanupIT.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/ExternalBlobIT.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/HeavyWriteIT.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentDataStoreBlobGCIT.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentGraphTest.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentOverflowExceptionIT.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentVersionTest.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreTest.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/SegmentReferenceLimitTestIT.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/migration/ExternalToExternalMigrationTest.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/migration/SegmentToExternalMigrationTest.java
jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTestUtils.java
jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/standby/DataStoreTestBase.java
jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/standby/ExternalPrivateStoreIT.java
jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/standby/ExternalSharedStoreIT.java
jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/standby/TestBase.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/SegmentFactory.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/container/SegmentNodeStoreContainer.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/LargeOperationIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/LargeOperationIT.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/LargeOperationIT.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/LargeOperationIT.java Mon Aug 15 12:35:19 2016
@@ -134,7 +134,7 @@ public class LargeOperationIT {
}
@Parameterized.Parameters
- public static Collection<Object[]> fixtures() throws IOException {
+ public static Collection<Object[]> fixtures() throws Exception {
File file = new File(new File("target"), "tar." + System.nanoTime());
SegmentStore segmentStore = FileStore.builder(file).withMaxFileSize(256).withMemoryMapping(true).build();
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferenceBinaryIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferenceBinaryIT.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferenceBinaryIT.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferenceBinaryIT.java Mon Aug 15 12:35:19 2016
@@ -23,7 +23,6 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertNotNull;
import java.io.File;
-import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Random;
@@ -134,7 +133,7 @@ public class ReferenceBinaryIT {
}
@Parameterized.Parameters
- public static Collection<Object[]> fixtures() throws IOException {
+ public static Collection<Object[]> fixtures() throws Exception {
File file = getTestDir("tar");
SegmentStore segmentStore = FileStore.builder(file)
.withBlobStore(createBlobStore())
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RefreshOnGCTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RefreshOnGCTest.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RefreshOnGCTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RefreshOnGCTest.java Mon Aug 15 12:35:19 2016
@@ -91,7 +91,7 @@ public class RefreshOnGCTest {
this.fixture = fixtures;
}
- private NodeStore createSegmentStore(File directory, GCMonitor gcMonitor) throws IOException {
+ private NodeStore createSegmentStore(File directory, GCMonitor gcMonitor) throws Exception {
CompactionStrategy strategy = new CompactionStrategy(
false, false, CLEAN_NONE, 0, CompactionStrategy.MEMORY_THRESHOLD_DEFAULT) {
@Override
@@ -130,7 +130,7 @@ public class RefreshOnGCTest {
}
@Before
- public void setup() throws IOException {
+ public void setup() throws Exception {
File directory = createTempFile(getClass().getSimpleName(), "test", new File("target"));
directory.delete();
directory.mkdir();
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/Checkpoints.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/Checkpoints.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/Checkpoints.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/Checkpoints.java Mon Aug 15 12:35:19 2016
@@ -26,6 +26,7 @@ import com.google.common.io.Closer;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.state.NodeState;
/**
@@ -33,7 +34,7 @@ import org.apache.jackrabbit.oak.spi.sta
*/
public abstract class Checkpoints {
- public static Checkpoints onSegment(File path, Closer closer) throws IOException {
+ public static Checkpoints onSegment(File path, Closer closer) throws IOException, InvalidFileStoreVersionException {
return SegmentCheckpoints.create(path, closer);
}
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/SegmentCheckpoints.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/SegmentCheckpoints.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/SegmentCheckpoints.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/checkpoint/SegmentCheckpoints.java Mon Aug 15 12:35:19 2016
@@ -25,13 +25,14 @@ import com.google.common.collect.Lists;
import com.google.common.io.Closer;
import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
final class SegmentCheckpoints extends Checkpoints {
- static Checkpoints create(File path, Closer closer) throws IOException {
+ static Checkpoints create(File path, Closer closer) throws IOException, InvalidFileStoreVersionException {
return new SegmentCheckpoints(closer.register(FileStore.builder(path).build()));
}
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentExplorerBackend.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentExplorerBackend.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentExplorerBackend.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/SegmentExplorerBackend.java Mon Aug 15 12:35:19 2016
@@ -39,6 +39,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStateHelper;
import org.apache.jackrabbit.oak.plugins.segment.SegmentPropertyState;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.state.NodeState;
class SegmentExplorerBackend implements ExplorerBackend {
@@ -55,7 +56,12 @@ class SegmentExplorerBackend implements
@Override
public void open() throws IOException {
- store = FileStore.builder(path).buildReadOnly();
+ try {
+ store = FileStore.builder(path).buildReadOnly();
+ } catch (InvalidFileStoreVersionException e) {
+ throw new IllegalStateException(e);
+ }
+
index = store.getTarReaderIndex();
}
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/segment/FileStoreHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/segment/FileStoreHelper.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/segment/FileStoreHelper.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/segment/FileStoreHelper.java Mon Aug 15 12:35:19 2016
@@ -38,6 +38,7 @@ import java.util.UUID;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore.ReadOnlyStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.plugins.segment.file.JournalReader;
import org.apache.jackrabbit.oak.plugins.segment.file.tooling.BasicReadOnlyBlobStore;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
@@ -173,7 +174,7 @@ public final class FileStoreHelper {
return false;
}
- public static File checkFileStoreVersionOrFail(String path, boolean force) throws IOException {
+ public static File checkFileStoreVersionOrFail(String path, boolean force) throws IOException, InvalidFileStoreVersionException {
File directory = new File(path);
if (!directory.exists()) {
return directory;
@@ -199,19 +200,20 @@ public final class FileStoreHelper {
return directory;
}
- public static FileStore openFileStore(String directory) throws IOException {
+ public static FileStore openFileStore(String directory) throws IOException, InvalidFileStoreVersionException {
return openFileStore(directory, false);
}
public static FileStore openFileStore(String directory, boolean force)
- throws IOException {
+ throws IOException, InvalidFileStoreVersionException {
return FileStore.builder(checkFileStoreVersionOrFail(directory, force))
.withCacheSize(TAR_SEGMENT_CACHE_SIZE)
.withMemoryMapping(TAR_STORAGE_MEMORY_MAPPED).build();
}
public static FileStore openFileStore(String directory, boolean force,
- BlobStore blobStore) throws IOException {
+ BlobStore blobStore
+ ) throws IOException, InvalidFileStoreVersionException {
return FileStore.builder(checkFileStoreVersionOrFail(directory, force))
.withCacheSize(TAR_SEGMENT_CACHE_SIZE)
.withMemoryMapping(TAR_STORAGE_MEMORY_MAPPED)
@@ -219,7 +221,7 @@ public final class FileStoreHelper {
}
public static ReadOnlyStore openReadOnlyFileStore(File directory)
- throws IOException {
+ throws IOException, InvalidFileStoreVersionException {
return FileStore.builder(isValidFileStoreOrFail(directory))
.withCacheSize(TAR_SEGMENT_CACHE_SIZE)
.withMemoryMapping(TAR_STORAGE_MEMORY_MAPPED)
@@ -227,7 +229,8 @@ public final class FileStoreHelper {
}
public static ReadOnlyStore openReadOnlyFileStore(File directory,
- BlobStore blobStore) throws IOException {
+ BlobStore blobStore
+ ) throws IOException, InvalidFileStoreVersionException {
return FileStore.builder(isValidFileStoreOrFail(directory))
.withCacheSize(TAR_SEGMENT_CACHE_SIZE)
.withMemoryMapping(TAR_STORAGE_MEMORY_MAPPED)
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreRevisionRecovery.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreRevisionRecovery.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreRevisionRecovery.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreRevisionRecovery.java Mon Aug 15 12:35:19 2016
@@ -100,7 +100,7 @@ public class FileStoreRevisionRecovery {
private static SortedMap<String, String> extractRoots(File dir,
SortedMap<String, UUID> candidates, final SegmentVersion version)
- throws IOException {
+ throws IOException, InvalidFileStoreVersionException {
ReadOnlyStore store = FileStore.builder(dir).withSegmentVersion(version).buildReadOnly();
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/SegmentUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/SegmentUtils.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/SegmentUtils.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/SegmentUtils.java Mon Aug 15 12:35:19 2016
@@ -23,6 +23,7 @@ import java.io.IOException;
import com.google.common.io.Closer;
import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -32,15 +33,15 @@ class SegmentUtils {
// Prevent instantiation
}
- static NodeStore bootstrap(String path, BlobStore store, Closer closer) throws IOException {
+ static NodeStore bootstrap(String path, BlobStore store, Closer closer) throws IOException, InvalidFileStoreVersionException {
return SegmentNodeStore.builder(fileStore(path, store, closer)).build();
}
- private static FileStore fileStore(String path, BlobStore store, Closer closer) throws IOException {
+ private static FileStore fileStore(String path, BlobStore store, Closer closer) throws IOException, InvalidFileStoreVersionException {
return closer.register(fileStore(path, store));
}
- private static FileStore fileStore(String path, BlobStore store) throws IOException {
+ private static FileStore fileStore(String path, BlobStore store) throws IOException, InvalidFileStoreVersionException {
return FileStore.builder(new File(path)).withBlobStore(store).build();
}
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/TextExtractorMain.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/TextExtractorMain.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/TextExtractorMain.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/TextExtractorMain.java Mon Aug 15 12:35:19 2016
@@ -52,6 +52,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.slf4j.Logger;
@@ -286,7 +287,7 @@ public class TextExtractorMain {
return props;
}
- private static NodeStore bootStrapNodeStore(String src, boolean segmentTar, BlobStore blobStore, Closer closer) throws IOException {
+ private static NodeStore bootStrapNodeStore(String src, boolean segmentTar, BlobStore blobStore, Closer closer) throws IOException, InvalidFileStoreVersionException {
if (src.startsWith(MongoURI.MONGODB_PREFIX)) {
MongoClientURI uri = new MongoClientURI(src);
if (uri.getDatabase() == null) {
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentUtils.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentUtils.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentUtils.java Mon Aug 15 12:35:19 2016
@@ -84,6 +84,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore.ReadOnlyStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.plugins.segment.file.JournalReader;
import org.apache.jackrabbit.oak.plugins.segment.file.tooling.RevisionHistory;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
@@ -98,7 +99,7 @@ class SegmentUtils {
// Prevent instantiation
}
- static NodeStore bootstrapNodeStore(String path, Closer closer) throws IOException {
+ static NodeStore bootstrapNodeStore(String path, Closer closer) throws IOException, InvalidFileStoreVersionException {
return SegmentNodeStore.builder(bootstrapFileStore(path, closer)).build();
}
@@ -121,11 +122,11 @@ class SegmentUtils {
}
}
- static void restore(File source, File target) throws IOException {
+ static void restore(File source, File target) throws IOException, InvalidFileStoreVersionException {
FileStoreRestore.restore(source, target);
}
- static void debug(String... args) throws IOException {
+ static void debug(String... args) throws IOException, InvalidFileStoreVersionException {
File file = new File(args[0]);
System.out.println("Debug " + file);
FileStore store = openReadOnlyFileStore(file);
@@ -154,18 +155,18 @@ class SegmentUtils {
}
}
- static void history(File directory, File journal, String path, int depth) throws IOException {
+ static void history(File directory, File journal, String path, int depth) throws IOException, InvalidFileStoreVersionException {
Iterable<RevisionHistory.HistoryElement> history = new RevisionHistory(directory).getHistory(journal, path);
for (RevisionHistory.HistoryElement historyElement : history) {
System.out.println(historyElement.toString(depth));
}
}
- static void check(File dir, String journalFileName, boolean fullTraversal, long debugLevel, long binLen) throws IOException {
+ static void check(File dir, String journalFileName, boolean fullTraversal, long debugLevel, long binLen) throws IOException, InvalidFileStoreVersionException {
checkConsistency(dir, journalFileName, fullTraversal, debugLevel, binLen);
}
- static void compact(File directory, boolean force) throws IOException {
+ static void compact(File directory, boolean force) throws IOException, InvalidFileStoreVersionException {
FileStore store = openFileStore(directory.getAbsolutePath(), force);
try {
boolean persistCM = Boolean.getBoolean("tar.PersistCompactionMap");
@@ -225,7 +226,7 @@ class SegmentUtils {
}
}
- static void diff(File store, File out, boolean listOnly, String interval, boolean incremental, String path, boolean ignoreSNFEs) throws IOException {
+ static void diff(File store, File out, boolean listOnly, String interval, boolean incremental, String path, boolean ignoreSNFEs) throws IOException, InvalidFileStoreVersionException {
if (listOnly) {
listRevs(store, out);
} else {
@@ -233,11 +234,11 @@ class SegmentUtils {
}
}
- private static FileStore bootstrapFileStore(String path, Closer closer) throws IOException {
+ private static FileStore bootstrapFileStore(String path, Closer closer) throws IOException, InvalidFileStoreVersionException {
return closer.register(bootstrapFileStore(path));
}
- private static FileStore bootstrapFileStore(String path) throws IOException {
+ private static FileStore bootstrapFileStore(String path) throws IOException, InvalidFileStoreVersionException {
return FileStore.builder(new File(path)).build();
}
@@ -259,7 +260,7 @@ class SegmentUtils {
}
}
- private static void diff(File dir, String interval, boolean incremental, File out, String filter, boolean ignoreSNFEs) throws IOException {
+ private static void diff(File dir, String interval, boolean incremental, File out, String filter, boolean ignoreSNFEs) throws IOException, InvalidFileStoreVersionException {
System.out.println("Store " + dir);
System.out.println("Writing diff to " + out);
String[] tokens = interval.trim().split("\\.\\.");
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java Mon Aug 15 12:35:19 2016
@@ -49,12 +49,13 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
class Utils {
- public static NodeStore bootstrapNodeStore(String[] args, Closer closer, String h) throws IOException {
+ public static NodeStore bootstrapNodeStore(String[] args, Closer closer, String h) throws IOException, InvalidFileStoreVersionException {
//TODO add support for other NodeStore flags
OptionParser parser = new OptionParser();
OptionSpec<Integer> clusterId = parser
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java Mon Aug 15 12:35:19 2016
@@ -38,6 +38,7 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
+import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.segment.file.tooling.BasicReadOnlyBlobStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,7 +54,7 @@ public class FileStoreBackup {
public static void backup(@Nonnull SegmentReader reader,
@Nonnull Revisions revisions,
@Nonnull File destination)
- throws IOException {
+ throws IOException, InvalidFileStoreVersionException {
Stopwatch watch = Stopwatch.createStarted();
SegmentGCOptions gcOptions = SegmentGCOptions.defaultGCOptions()
.setOffline();
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java Mon Aug 15 12:35:19 2016
@@ -34,6 +34,7 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.WriterCacheManager;
import org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions;
import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -47,7 +48,7 @@ public class FileStoreRestore {
private static final String JOURNAL_FILE_NAME = "journal.log";
public static void restore(File source, File destination)
- throws IOException {
+ throws IOException, InvalidFileStoreVersionException {
if (!validFileStore(source)) {
throw new IOException("Folder " + source
+ " is not a valid FileStore directory");
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=1756374&r1=1756373&r2=1756374&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 Mon Aug 15 12:35:19 2016
@@ -76,6 +76,7 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.file.FileStoreGCMonitor;
import org.apache.jackrabbit.oak.segment.file.FileStoreStatsMBean;
import org.apache.jackrabbit.oak.segment.file.GCMonitorMBean;
+import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
import org.apache.jackrabbit.oak.spi.commit.Observable;
@@ -387,7 +388,12 @@ public class SegmentNodeStoreService ext
builder.withBlobStore(blobStore);
}
- store = builder.build();
+ try {
+ store = builder.build();
+ } catch (InvalidFileStoreVersionException e) {
+ log.error("The segment store data is not compatible with the current version. Please use oak-segment or a different version of oak-segment-tar.");
+ return false;
+ }
// Expose an MBean to provide information about the gc options
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=1756374&r1=1756373&r2=1756374&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 Mon Aug 15 12:35:19 2016
@@ -76,6 +76,7 @@ import com.google.common.base.Predicate;
import com.google.common.base.Stopwatch;
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableList;
+import com.google.common.io.Files;
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
import org.apache.jackrabbit.oak.api.jmx.CacheStatsMBean;
import org.apache.jackrabbit.oak.plugins.blob.ReferenceCollector;
@@ -108,6 +109,7 @@ import org.slf4j.LoggerFactory;
* The storage implementation for tar files.
*/
public class FileStore implements SegmentStore, Closeable {
+
private static final Logger log = LoggerFactory.getLogger(FileStore.class);
private static final int MB = 1024 * 1024;
@@ -119,6 +121,8 @@ public class FileStore implements Segmen
private static final String LOCK_FILE_NAME = "repo.lock";
+ private static final String MANIFEST_FILE_NAME = "manifest";
+
/**
* GC counter for logging purposes
*/
@@ -232,7 +236,7 @@ public class FileStore implements Segmen
};
// FIXME OAK-4450: Properly split the FileStore into read-only and r/w variants
- FileStore(FileStoreBuilder builder, final boolean readOnly) throws IOException {
+ FileStore(FileStoreBuilder builder, final boolean readOnly) throws InvalidFileStoreVersionException, IOException {
this.tracker = new SegmentTracker();
this.revisions = builder.getRevisions();
this.blobStore = builder.getBlobStore();
@@ -274,7 +278,21 @@ public class FileStore implements Segmen
this.gcListener = builder.getGcListener();
this.gcOptions = builder.getGcOptions();
this.gcJournal = new GCJournal(directory);
+
Map<Integer, Map<Character, File>> map = collectFiles(directory);
+
+ File manifest = new File(directory, MANIFEST_FILE_NAME);
+
+ if (map.size() > 0) {
+ if (manifest.exists()) {
+ log.debug("The store folder is non empty and has a valid manifest file");
+ } else {
+ throw new InvalidFileStoreVersionException();
+ }
+ }
+
+ Files.touch(manifest);
+
this.readers = newArrayListWithCapacity(map.size());
Integer[] indices = map.keySet().toArray(new Integer[map.size()]);
Arrays.sort(indices);
@@ -1452,7 +1470,7 @@ public class FileStore implements Segmen
public static class ReadOnlyStore extends FileStore {
private RecordId currentHead;
- ReadOnlyStore(FileStoreBuilder builder) throws IOException {
+ ReadOnlyStore(FileStoreBuilder builder) throws InvalidFileStoreVersionException, IOException {
super(builder, true);
}
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=1756374&r1=1756373&r2=1756374&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 Mon Aug 15 12:35:19 2016
@@ -333,7 +333,7 @@ public class FileStoreBuilder {
* @throws IOException
*/
@Nonnull
- public FileStore build() throws IOException {
+ public FileStore build() throws InvalidFileStoreVersionException, IOException {
checkState(revisions == null, "Cannot re-use builder");
directory.mkdir();
revisions = new TarRevisions(false, directory);
@@ -359,7 +359,7 @@ public class FileStoreBuilder {
* @throws IOException
*/
@Nonnull
- public ReadOnlyStore buildReadOnly() throws IOException {
+ public ReadOnlyStore buildReadOnly() throws InvalidFileStoreVersionException, IOException {
checkState(revisions == null, "Cannot re-use builder");
checkState(directory.exists() && directory.isDirectory());
revisions = new TarRevisions(true, directory);
Added: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/InvalidFileStoreVersionException.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/InvalidFileStoreVersionException.java?rev=1756374&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/InvalidFileStoreVersionException.java (added)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/InvalidFileStoreVersionException.java Mon Aug 15 12:35:19 2016
@@ -0,0 +1,27 @@
+/*
+ * 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;
+
+/**
+ * This exception can be thrown during the startup of the {@link FileStore} to
+ * indicate an incompatible version mismatch between the code that generated the
+ * data in the store and the current version of the {@link FileStore}.
+ */
+public class InvalidFileStoreVersionException extends Exception {
+
+}
Propchange: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/InvalidFileStoreVersionException.java
------------------------------------------------------------------------------
svn:eol-style = native
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=1756374&r1=1756373&r2=1756374&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 Mon Aug 15 12:35:19 2016
@@ -43,6 +43,7 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.file.FileStore.ReadOnlyStore;
+import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.segment.file.JournalReader;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -74,7 +75,7 @@ public class ConsistencyChecker implemen
* @throws IOException
*/
public static String checkConsistency(File directory, String journalFileName,
- boolean fullTraversal, long debugInterval, long binLen) throws IOException {
+ boolean fullTraversal, long debugInterval, long binLen) throws IOException, InvalidFileStoreVersionException {
print("Searching for last good revision in {}", journalFileName);
Set<String> badPaths = newHashSet();
try (
@@ -117,7 +118,7 @@ public class ConsistencyChecker implemen
* @throws IOException
*/
public ConsistencyChecker(File directory, long debugInterval)
- throws IOException {
+ throws IOException, InvalidFileStoreVersionException {
store = fileStoreBuilder(directory).buildReadOnly();
this.debugInterval = debugInterval;
}
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=1756374&r1=1756373&r2=1756374&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 Mon Aug 15 12:35:19 2016
@@ -39,6 +39,7 @@ import org.apache.jackrabbit.oak.json.Js
import org.apache.jackrabbit.oak.segment.SegmentNodeState;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.file.FileStore.ReadOnlyStore;
+import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.segment.file.JournalReader;
import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -54,7 +55,7 @@ public class RevisionHistory {
* @param directory
* @throws IOException
*/
- public RevisionHistory(@Nonnull File directory) throws IOException {
+ public RevisionHistory(@Nonnull File directory) throws IOException, InvalidFileStoreVersionException {
this.store = fileStoreBuilder(checkNotNull(directory)).buildReadOnly();
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java Mon Aug 15 12:35:19 2016
@@ -122,15 +122,14 @@ public class FileStoreBackupTest {
return nodeStore.createBlob(new ByteArrayInputStream(data));
}
- private static FileStore newFileStore(File fs) throws IOException {
+ private static FileStore newFileStore(File fs) throws Exception {
return fileStoreBuilder(fs)
.withMaxFileSize(1)
.withGCOptions(SegmentGCOptions.defaultGCOptions().setOffline())
.build();
}
- private static void compare(FileStore store, File destination)
- throws IOException {
+ private static void compare(FileStore store, File destination) throws Exception {
FileStore backup = fileStoreBuilder(destination).build();
assertEquals(store.getHead(), backup.getHead());
backup.close();
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java Mon Aug 15 12:35:19 2016
@@ -89,8 +89,7 @@ public class CompactionAndCleanupIT {
}
@Test
- public void compactionNoBinaryClone()
- throws IOException, CommitFailedException {
+ public void compactionNoBinaryClone() throws Exception {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
FileStore fileStore = fileStoreBuilder(getFileStoreFolder())
.withGCOptions(defaultGCOptions().setRetainedGenerations(2))
@@ -176,8 +175,7 @@ public class CompactionAndCleanupIT {
}
@Test
- public void offlineCompaction()
- throws IOException, CommitFailedException {
+ public void offlineCompaction() throws Exception {
SegmentGCOptions gcOptions = defaultGCOptions().setOffline();
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
FileStore fileStore = fileStoreBuilder(getFileStoreFolder())
@@ -269,8 +267,7 @@ public class CompactionAndCleanupIT {
* that compacting checkpoints will not cause the size to explode
*/
@Test
- public void offlineCompactionCps() throws IOException,
- CommitFailedException {
+ public void offlineCompactionCps() throws Exception {
SegmentGCOptions gcOptions = defaultGCOptions().setOffline();
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
FileStore fileStore = fileStoreBuilder(getFileStoreFolder())
@@ -322,8 +319,7 @@ public class CompactionAndCleanupIT {
* de-duplication capabilities of compaction.
*/
@Test
- public void offlineCompactionBinC1() throws IOException,
- CommitFailedException {
+ public void offlineCompactionBinC1() throws Exception {
SegmentGCOptions gcOptions = defaultGCOptions().setOffline()
.withBinaryDeduplication();
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
@@ -378,8 +374,7 @@ public class CompactionAndCleanupIT {
* de-duplication capabilities of compaction.
*/
@Test
- public void offlineCompactionBinC2() throws IOException,
- CommitFailedException {
+ public void offlineCompactionBinC2() throws Exception {
int blobSize = 5 * 1024 * 1024;
SegmentGCOptions gcOptions = defaultGCOptions().setOffline()
@@ -439,8 +434,7 @@ public class CompactionAndCleanupIT {
* de-duplication capabilities of compaction
*/
@Test
- public void offlineCompactionBinR1() throws IOException,
- CommitFailedException {
+ public void offlineCompactionBinR1() throws Exception {
SegmentGCOptions gcOptions = defaultGCOptions().setOffline();
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
FileStore fileStore = fileStoreBuilder(getFileStoreFolder())
@@ -629,7 +623,7 @@ public class CompactionAndCleanupIT {
* This is a regression introduced with OAK-1828.
*/
@Test
- public void cleanupCyclicGraph() throws IOException, ExecutionException, InterruptedException {
+ public void cleanupCyclicGraph() throws Exception {
FileStore fileStore = fileStoreBuilder(getFileStoreFolder()).build();
final SegmentWriter writer = fileStore.getWriter();
final SegmentNodeState oldHead = fileStore.getHead();
@@ -687,7 +681,7 @@ public class CompactionAndCleanupIT {
* Test asserting OAK-3348: Cross gc sessions might introduce references to pre-compacted segments
*/
@Test
- public void preCompactionReferences() throws IOException, CommitFailedException, InterruptedException {
+ public void preCompactionReferences() throws Exception {
for (String ref : new String[] {"merge-before-compact", "merge-after-compact"}) {
File repoDir = new File(getFileStoreFolder(), ref);
FileStore fileStore = fileStoreBuilder(repoDir)
@@ -846,7 +840,7 @@ public class CompactionAndCleanupIT {
}
@Test
- public void propertyRetention() throws IOException, CommitFailedException {
+ public void propertyRetention() throws Exception {
SegmentGCOptions gcOptions = defaultGCOptions();
FileStore fileStore = fileStoreBuilder(getFileStoreFolder())
.withMaxFileSize(1)
@@ -895,7 +889,7 @@ public class CompactionAndCleanupIT {
}
@Test
- public void checkpointDeduplicationTest() throws IOException, CommitFailedException {
+ public void checkpointDeduplicationTest() throws Exception {
FileStore fileStore = fileStoreBuilder(getFileStoreFolder()).build();
try {
SegmentNodeStore nodeStore = SegmentNodeStoreBuilders.builder(fileStore).build();
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ExternalBlobIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ExternalBlobIT.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ExternalBlobIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ExternalBlobIT.java Mon Aug 15 12:35:19 2016
@@ -160,7 +160,7 @@ public class ExternalBlobIT {
nodeStore = null;
}
- protected SegmentNodeStore getNodeStore(BlobStore blobStore) throws IOException {
+ protected SegmentNodeStore getNodeStore(BlobStore blobStore) throws Exception {
if (nodeStore == null) {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/HeavyWriteIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/HeavyWriteIT.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/HeavyWriteIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/HeavyWriteIT.java Mon Aug 15 12:35:19 2016
@@ -62,7 +62,7 @@ public class HeavyWriteIT {
}
@Test
- public void heavyWrite() throws IOException, CommitFailedException, InterruptedException {
+ public void heavyWrite() throws Exception {
final FileStore store = fileStoreBuilder(getFileStoreFolder()).withMaxFileSize(128).withMemoryMapping(false).build();
final SegmentNodeStore nodeStore = SegmentNodeStoreBuilders.builder(store).build();
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java Mon Aug 15 12:35:19 2016
@@ -79,7 +79,7 @@ public class RecordTest {
private final Random random = new Random(0xcafefaceL);
@Before
- public void setup() throws IOException {
+ public void setup() throws Exception {
store = fileStoreBuilder(folder.getRoot()).build();
writer = store.getWriter();
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java Mon Aug 15 12:35:19 2016
@@ -62,7 +62,6 @@ import java.util.concurrent.locks.Reentr
import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
@@ -220,8 +219,7 @@ public class SegmentCompactionIT {
}
@Before
- public void setUp() throws IOException, MalformedObjectNameException, NotCompliantMBeanException,
- InstanceAlreadyExistsException, MBeanRegistrationException {
+ public void setUp() throws Exception {
assumeTrue(ENABLED);
scheduler.scheduleAtFixedRate(new Runnable() {
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java Mon Aug 15 12:35:19 2016
@@ -105,7 +105,7 @@ public class SegmentDataStoreBlobGCIT {
assumeTrue(getFixtures().contains(SEGMENT_TAR));
}
- protected SegmentNodeStore getNodeStore(BlobStore blobStore) throws IOException {
+ protected SegmentNodeStore getNodeStore(BlobStore blobStore) throws Exception {
if (nodeStore == null) {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
FileStoreBuilder builder = fileStoreBuilder(getWorkDir())
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentGraphTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentGraphTest.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentGraphTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentGraphTest.java Mon Aug 15 12:35:19 2016
@@ -31,7 +31,6 @@ import static org.apache.jackrabbit.oak.
import static org.junit.Assert.assertEquals;
import java.io.File;
-import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
@@ -65,7 +64,7 @@ public class SegmentGraphTest {
}
@Before
- public void setup() throws IOException {
+ public void setup() throws Exception {
FileStore store = fileStoreBuilder(getStoreFolder()).build();
try {
SegmentNodeState root = store.getHead();
@@ -127,7 +126,7 @@ public class SegmentGraphTest {
private static UUID getSegmentId(SegmentNodeState root) {return root.getSegment().getSegmentId().asUUID();}
@Test
- public void testSegmentGraph() throws IOException {
+ public void testSegmentGraph() throws Exception {
ReadOnlyStore store = fileStoreBuilder(getStoreFolder()).buildReadOnly();
try {
Graph<UUID> segmentGraph = parseSegmentGraph(store, Predicates.<UUID>alwaysTrue());
@@ -143,7 +142,7 @@ public class SegmentGraphTest {
}
@Test
- public void testSegmentGraphWithFilter() throws IOException {
+ public void testSegmentGraphWithFilter() throws Exception {
ReadOnlyStore store = fileStoreBuilder(getStoreFolder()).buildReadOnly();
try {
Predicate<UUID> filter = createRegExpFilter(".*(writer2|writer3).*", store);
@@ -160,7 +159,7 @@ public class SegmentGraphTest {
}
@Test
- public void testGCGraph() throws IOException {
+ public void testGCGraph() throws Exception {
// TODO Improve test coverage to non trivial cases with more than a single generation
// This is quite tricky as there is no easy way to construct a file store with
// a segment graphs having edges between generations (OAK-3348)
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentOverflowExceptionIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentOverflowExceptionIT.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentOverflowExceptionIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentOverflowExceptionIT.java Mon Aug 15 12:35:19 2016
@@ -93,7 +93,7 @@ public class SegmentOverflowExceptionIT
};
@Test
- public void run() throws IOException, CommitFailedException, InterruptedException {
+ public void run() throws Exception {
FileStore fileStore = fileStoreBuilder(getFileStoreFolder()).withGCMonitor(gcMonitor).build();
try {
final SegmentNodeStore nodeStore = SegmentNodeStoreBuilders.builder(fileStore).build();
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentSizeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentSizeTest.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentSizeTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentSizeTest.java Mon Aug 15 12:35:19 2016
@@ -53,7 +53,7 @@ public class SegmentSizeTest {
private FileStore store;
@Before
- public void setup() throws IOException {
+ public void setup() throws Exception {
store = fileStoreBuilder(folder.getRoot()).build();
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreIT.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreIT.java Mon Aug 15 12:35:19 2016
@@ -66,16 +66,16 @@ public class FileStoreIT {
}
@Test
- public void testRestartAndGCWithoutMM() throws IOException {
+ public void testRestartAndGCWithoutMM() throws Exception {
testRestartAndGC(false);
}
@Test
- public void testRestartAndGCWithMM() throws IOException {
+ public void testRestartAndGCWithMM() throws Exception {
testRestartAndGC(true);
}
- public void testRestartAndGC(boolean memoryMapping) throws IOException {
+ public void testRestartAndGC(boolean memoryMapping) throws Exception {
FileStore store = fileStoreBuilder(getFileStoreFolder()).withMaxFileSize(1).withMemoryMapping(memoryMapping).build();
store.close();
@@ -101,7 +101,7 @@ public class FileStoreIT {
}
@Test
- public void testRecovery() throws IOException {
+ public void testRecovery() throws Exception {
FileStore store = fileStoreBuilder(getFileStoreFolder()).withMaxFileSize(1).withMemoryMapping(false).build();
store.flush();
@@ -171,7 +171,7 @@ public class FileStoreIT {
}
@Test // See OAK-2049
- public void segmentOverflow() throws IOException {
+ public void segmentOverflow() throws Exception {
for (int n = 1; n < 255; n++) { // 255 = ListRecord.LEVEL_SIZE
FileStore store = fileStoreBuilder(getFileStoreFolder()).withMaxFileSize(1).withMemoryMapping(false).build();
SegmentWriter writer = store.getWriter();
@@ -204,7 +204,7 @@ public class FileStoreIT {
}
@Test
- public void nonBlockingROStore() throws IOException {
+ public void nonBlockingROStore() throws Exception {
FileStore store = fileStoreBuilder(getFileStoreFolder()).withMaxFileSize(1).withMemoryMapping(false).build();
store.flush(); // first 1kB
SegmentNodeState base = store.getHead();
@@ -226,7 +226,7 @@ public class FileStoreIT {
}
@Test
- public void setRevisionTest() throws IOException {
+ public void setRevisionTest() throws Exception {
try (FileStore store = fileStoreBuilder(getFileStoreFolder()).build()) {
RecordId id1 = store.getRevisions().getHead();
SegmentNodeState base = store.getHead();
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreTest.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreTest.java Mon Aug 15 12:35:19 2016
@@ -22,7 +22,6 @@ package org.apache.jackrabbit.oak.segmen
import static org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.fileStoreBuilder;
import java.io.File;
-import java.io.IOException;
import org.apache.jackrabbit.oak.segment.SegmentId;
import org.junit.Rule;
@@ -39,7 +38,7 @@ public class FileStoreTest {
}
@Test
- public void containsSegment() throws IOException {
+ public void containsSegment() throws Exception {
FileStore fileStore = fileStoreBuilder(getFileStoreFolder()).build();
try {
SegmentId id = new SegmentId(fileStore, 0, 0);
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SegmentReferenceLimitTestIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SegmentReferenceLimitTestIT.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SegmentReferenceLimitTestIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SegmentReferenceLimitTestIT.java Mon Aug 15 12:35:19 2016
@@ -27,10 +27,8 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
-import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.segment.SegmentNodeStore;
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
@@ -75,7 +73,7 @@ public class SegmentReferenceLimitTestIT
}
@Test
- public void corruption() throws IOException, CommitFailedException, ExecutionException, InterruptedException {
+ public void corruption() throws Exception {
FileStore fileStore = fileStoreBuilder(getFileStoreFolder())
.withMaxFileSize(1)
.withSegmentCacheSize(0)
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarRevisionsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarRevisionsTest.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarRevisionsTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarRevisionsTest.java Mon Aug 15 12:35:19 2016
@@ -64,7 +64,7 @@ public class TarRevisionsTest {
}
@Before
- public void setup() throws IOException {
+ public void setup() throws Exception {
store = FileStoreBuilder.fileStoreBuilder(getFileStoreFolder()).build();
revisions = store.getRevisions();
reader = store.getReader();
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/migration/ExternalToExternalMigrationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/migration/ExternalToExternalMigrationTest.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/migration/ExternalToExternalMigrationTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/migration/ExternalToExternalMigrationTest.java Mon Aug 15 12:35:19 2016
@@ -27,6 +27,7 @@ import java.io.IOException;
import org.apache.jackrabbit.oak.plugins.blob.migration.AbstractMigratorTest;
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.blob.FileBlobStore;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -38,7 +39,13 @@ public class ExternalToExternalMigration
@Override
protected NodeStore createNodeStore(BlobStore blobStore, File repository) throws IOException {
File segmentDir = new File(repository, "segmentstore");
- store = fileStoreBuilder(segmentDir).withBlobStore(blobStore).build();
+
+ try {
+ store = fileStoreBuilder(segmentDir).withBlobStore(blobStore).build();
+ } catch (InvalidFileStoreVersionException e) {
+ throw new IllegalStateException(e);
+ }
+
return SegmentNodeStoreBuilders.builder(store).build();
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/migration/SegmentToExternalMigrationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/migration/SegmentToExternalMigrationTest.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/migration/SegmentToExternalMigrationTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/migration/SegmentToExternalMigrationTest.java Mon Aug 15 12:35:19 2016
@@ -28,6 +28,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
+import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.blob.FileBlobStore;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -43,7 +44,13 @@ public class SegmentToExternalMigrationT
if (blobStore != null) {
builder.withBlobStore(blobStore);
}
- store = builder.build();
+
+ try {
+ store = builder.build();
+ } catch (InvalidFileStoreVersionException e) {
+ throw new IllegalStateException(e);
+ }
+
return SegmentNodeStoreBuilders.builder(store).build();
}
Modified: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java (original)
+++ jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java Mon Aug 15 12:35:19 2016
@@ -27,6 +27,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.plugins.segment.file.tooling.BasicReadOnlyBlobStore;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -42,8 +43,7 @@ public class FileStoreBackup {
public static boolean USE_FAKE_BLOBSTORE = Boolean.getBoolean("oak.backup.UseFakeBlobStore");
- public static void backup(NodeStore store, File destination)
- throws IOException {
+ public static void backup(NodeStore store, File destination) throws IOException, InvalidFileStoreVersionException {
checkArgument(store instanceof SegmentNodeStore);
Stopwatch watch = Stopwatch.createStarted();
NodeState current = ((SegmentNodeStore) store).getSuperRoot();
Modified: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java (original)
+++ jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java Mon Aug 15 12:35:19 2016
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore.ReadOnlyStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,8 +40,7 @@ public class FileStoreRestore {
private static final String JOURNAL_FILE_NAME = "journal.log";
- public static void restore(File source, File destination)
- throws IOException {
+ public static void restore(File source, File destination) throws IOException, InvalidFileStoreVersionException {
if (!validFileStore(source)) {
throw new IOException("Folder " + source
+ " is not a valid FileStore directory");
Modified: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java Mon Aug 15 12:35:19 2016
@@ -82,6 +82,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.segment.file.FileStoreGCMonitor;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStoreStatsMBean;
import org.apache.jackrabbit.oak.plugins.segment.file.GCMonitorMBean;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
import org.apache.jackrabbit.oak.spi.commit.Observable;
@@ -435,7 +436,12 @@ public class SegmentNodeStoreService ext
builder.withBlobStore(blobStore);
}
- store = builder.build();
+ try {
+ store = builder.build();
+ } catch (InvalidFileStoreVersionException e) {
+ log.error("The segment store data is not compatible with the current version. Please use oak-segment-tar or a different version of oak-segment.");
+ return false;
+ }
// Create a compaction strategy
Modified: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java Mon Aug 15 12:35:19 2016
@@ -104,6 +104,8 @@ public class FileStore implements Segmen
private static final String LOCK_FILE_NAME = "repo.lock";
+ private static final String MANIFEST_FILE_NAME = "manifest";
+
/**
* GC counter for logging purposes
*/
@@ -368,17 +370,17 @@ public class FileStore implements Segmen
* @throws IOException
*/
@Nonnull
- public FileStore build() throws IOException {
+ public FileStore build() throws IOException, InvalidFileStoreVersionException {
return new FileStore(this, false);
}
- public ReadOnlyStore buildReadOnly() throws IOException {
+ public ReadOnlyStore buildReadOnly() throws IOException, InvalidFileStoreVersionException {
return new ReadOnlyStore(this);
}
}
- private FileStore(Builder builder, boolean readOnly) throws IOException {
+ private FileStore(Builder builder, boolean readOnly) throws IOException, InvalidFileStoreVersionException {
this.version = builder.version;
if (readOnly) {
@@ -401,15 +403,18 @@ public class FileStore implements Segmen
this.memoryMapping = builder.memoryMapping;
this.gcMonitor = builder.gcMonitor;
- if (readOnly) {
- journalFile = new RandomAccessFile(new File(directory,
- JOURNAL_FILE_NAME), "r");
- } else {
- journalFile = new RandomAccessFile(new File(directory,
- JOURNAL_FILE_NAME), "rw");
+ Map<Integer, Map<Character, File>> map = collectFiles(directory);
+
+ File manifest = new File(directory, MANIFEST_FILE_NAME);
+
+ if (map.size() > 0) {
+ if (manifest.exists()) {
+ throw new InvalidFileStoreVersionException();
+ } else {
+ log.debug("The store folder is non empty and does not have manifest file");
+ }
}
- Map<Integer, Map<Character, File>> map = collectFiles(directory);
this.readers = newArrayListWithCapacity(map.size());
Integer[] indices = map.keySet().toArray(new Integer[map.size()]);
Arrays.sort(indices);
@@ -440,6 +445,14 @@ public class FileStore implements Segmen
this.writer = new TarWriter(writeFile, stats);
}
+ if (readOnly) {
+ journalFile = new RandomAccessFile(new File(directory,
+ JOURNAL_FILE_NAME), "r");
+ } else {
+ journalFile = new RandomAccessFile(new File(directory,
+ JOURNAL_FILE_NAME), "rw");
+ }
+
RecordId id = null;
JournalReader journalReader = new JournalReader(new File(directory, JOURNAL_FILE_NAME));
try {
@@ -1394,7 +1407,7 @@ public class FileStore implements Segmen
*/
public static class ReadOnlyStore extends FileStore {
- private ReadOnlyStore(Builder builder) throws IOException {
+ private ReadOnlyStore(Builder builder) throws IOException, InvalidFileStoreVersionException {
super(builder, true);
}
Added: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/InvalidFileStoreVersionException.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/InvalidFileStoreVersionException.java?rev=1756374&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/InvalidFileStoreVersionException.java (added)
+++ jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/InvalidFileStoreVersionException.java Mon Aug 15 12:35:19 2016
@@ -0,0 +1,27 @@
+/*
+ * 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.plugins.segment.file;
+
+/**
+ * This exception can be thrown during the startup of the {@link FileStore} to
+ * indicate an incompatible version mismatch between the code that generated the
+ * data in the store and the current version of the {@link FileStore}.
+ */
+public class InvalidFileStoreVersionException extends Exception {
+
+}
Propchange: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/InvalidFileStoreVersionException.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/tooling/ConsistencyChecker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/tooling/ConsistencyChecker.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/tooling/ConsistencyChecker.java (original)
+++ jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/tooling/ConsistencyChecker.java Mon Aug 15 12:35:19 2016
@@ -41,6 +41,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore.ReadOnlyStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.plugins.segment.file.JournalReader;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -71,8 +72,8 @@ public class ConsistencyChecker {
* @return the latest consistent revision out of the revisions listed in the journal.
* @throws IOException
*/
- public static String checkConsistency(File directory, String journalFileName,
- boolean fullTraversal, long debugInterval, long binLen) throws IOException {
+ public static String checkConsistency(File directory, String journalFileName, boolean fullTraversal, long debugInterval, long binLen)
+ throws IOException, InvalidFileStoreVersionException {
print("Searching for last good revision in {}", journalFileName);
JournalReader journal = new JournalReader(new File(directory, journalFileName));
Set<String> badPaths = newHashSet();
@@ -116,8 +117,7 @@ public class ConsistencyChecker {
* the console during the full traversal phase.
* @throws IOException
*/
- public ConsistencyChecker(File directory, long debugInterval)
- throws IOException {
+ public ConsistencyChecker(File directory, long debugInterval) throws IOException, InvalidFileStoreVersionException {
store = FileStore.builder(directory).buildReadOnly();
this.debugInterval = debugInterval;
}
Modified: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/tooling/RevisionHistory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/tooling/RevisionHistory.java?rev=1756374&r1=1756373&r2=1756374&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/tooling/RevisionHistory.java (original)
+++ jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/tooling/RevisionHistory.java Mon Aug 15 12:35:19 2016
@@ -37,6 +37,7 @@ import org.apache.jackrabbit.oak.json.Js
import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore.ReadOnlyStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.plugins.segment.file.JournalReader;
import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -52,7 +53,7 @@ public class RevisionHistory {
* @param directory
* @throws IOException
*/
- public RevisionHistory(@Nonnull File directory) throws IOException {
+ public RevisionHistory(@Nonnull File directory) throws IOException, InvalidFileStoreVersionException {
this.store = FileStore.builder(checkNotNull(directory)).buildReadOnly();
}