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 2017/06/29 09:40:23 UTC
svn commit: r1800258 - in /jackrabbit/oak/trunk/oak-segment-tar/src:
main/java/org/apache/jackrabbit/oak/segment/file/
main/java/org/apache/jackrabbit/oak/segment/file/tar/
main/java/org/apache/jackrabbit/oak/segment/file/tooling/
test/java/org/apache/...
Author: frm
Date: Thu Jun 29 09:40:22 2017
New Revision: 1800258
URL: http://svn.apache.org/viewvc?rev=1800258&view=rev
Log:
OAK-6404 - Move TAR handling logic in its own package
Added:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java (with props)
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileAccess.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileAccess.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitor.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreMonitor.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitorAdapter.java (with props)
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitor.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/IOMonitor.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitorAdapter.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/IOMonitorAdapter.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarConstants.java (with props)
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarEntry.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntryVisitor.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarEntryVisitor.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarFiles.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarReader.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarReader.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarRecovery.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRecovery.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriter.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarWriter.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFileTest.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarFileTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java
- copied, changed from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarWriterTest.java
Removed:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileAccess.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreMonitor.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/IOMonitor.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/IOMonitorAdapter.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarEntry.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarEntryVisitor.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarFiles.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarReader.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRecovery.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarWriter.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarFileTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarWriterTest.java
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/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/MetricsIOMonitor.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.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/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreStatsTest.java
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=1800258&r1=1800257&r2=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java Thu Jun 29 09:40:22 2017
@@ -51,6 +51,10 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.SegmentStore;
import org.apache.jackrabbit.oak.segment.SegmentTracker;
import org.apache.jackrabbit.oak.segment.SegmentWriter;
+import org.apache.jackrabbit.oak.segment.file.tar.EntryRecovery;
+import org.apache.jackrabbit.oak.segment.file.tar.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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -77,8 +81,6 @@ public abstract class AbstractFileStore
*/
static final int CURRENT_STORE_VERSION = 1;
- static final String FILE_NAME_FORMAT = "data%05d%s.tar";
-
protected static boolean notEmptyDirectory(File path) {
Collection<File> entries = FileUtils.listFiles(path, new String[] {"tar"}, false);
checkArgument(entries != null, "{} is not a directory, or an I/O error occurred", path);
@@ -103,8 +105,8 @@ public abstract class AbstractFileStore
final TarRecovery recovery = new TarRecovery() {
@Override
- public void recoverEntry(UUID uuid, byte[] data, TarWriter writer) throws IOException {
- writeSegment(uuid, data, writer);
+ public void recoverEntry(UUID uuid, byte[] data, EntryRecovery entryRecovery) throws IOException {
+ writeSegment(uuid, data, entryRecovery);
}
};
@@ -227,12 +229,12 @@ public abstract class AbstractFileStore
return blobStore;
}
- private void writeSegment(UUID id, byte[] data, TarWriter w) throws IOException {
+ private void writeSegment(UUID id, byte[] data, EntryRecovery w) throws IOException {
long msb = id.getMostSignificantBits();
long lsb = id.getLeastSignificantBits();
ByteBuffer buffer = ByteBuffer.wrap(data);
int generation = Segment.getGcGeneration(buffer, id);
- w.writeEntry(msb, lsb, data, 0, data.length, generation);
+ w.recoverEntry(msb, lsb, data, 0, data.length, generation);
if (SegmentId.isDataSegmentId(lsb)) {
Segment segment = new Segment(tracker, segmentReader, tracker.newSegmentId(msb, lsb), buffer);
populateTarGraph(segment, w);
@@ -240,14 +242,14 @@ public abstract class AbstractFileStore
}
}
- static void populateTarGraph(Segment segment, TarWriter w) {
+ private static void populateTarGraph(Segment segment, EntryRecovery w) {
UUID from = segment.getSegmentId().asUUID();
for (int i = 0; i < segment.getReferencedSegmentIdCount(); i++) {
- w.addGraphEdge(from, segment.getReferencedSegmentId(i));
+ w.recoverGraphEdge(from, segment.getReferencedSegmentId(i));
}
}
- static void populateTarBinaryReferences(final Segment segment, final TarWriter w) {
+ private static void populateTarBinaryReferences(final Segment segment, final EntryRecovery w) {
final int generation = segment.getGcGeneration();
final UUID id = segment.getSegmentId().asUUID();
segment.forEachRecord(new RecordConsumer() {
@@ -255,7 +257,7 @@ public abstract class AbstractFileStore
@Override
public void consume(int number, RecordType type, int offset) {
if (type == RecordType.BLOB_ID) {
- w.addBinaryReference(generation, id, SegmentBlob.readBlobId(segment, number));
+ w.recoverBinaryReference(generation, id, SegmentBlob.readBlobId(segment, number));
}
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java?rev=1800258&r1=1800257&r2=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java Thu Jun 29 09:40:22 2017
@@ -84,7 +84,8 @@ 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.GCJournal.GCJournalEntry;
-import org.apache.jackrabbit.oak.segment.file.TarFiles.CleanupResult;
+import org.apache.jackrabbit.oak.segment.file.tar.TarFiles;
+import org.apache.jackrabbit.oak.segment.file.tar.TarFiles.CleanupResult;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
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=1800258&r1=1800257&r2=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java Thu Jun 29 09:40:22 2017
@@ -45,6 +45,8 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.WriterCacheManager;
import org.apache.jackrabbit.oak.segment.compaction.LoggingGCMonitor;
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.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.gc.GCMonitor;
import org.apache.jackrabbit.oak.stats.StatisticsProvider;
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=1800258&r1=1800257&r2=1800258&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 Thu Jun 29 09:40:22 2017
@@ -26,6 +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.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=1800258&r1=1800257&r2=1800258&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 Thu Jun 29 09:40:22 2017
@@ -19,11 +19,8 @@ package org.apache.jackrabbit.oak.segmen
import java.io.File;
import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.List;
import org.apache.jackrabbit.oak.segment.RecordId;
-import org.apache.jackrabbit.oak.segment.SegmentId;
import org.apache.jackrabbit.oak.segment.SegmentIdProvider;
import org.apache.jackrabbit.oak.segment.SegmentStore;
import org.slf4j.Logger;
@@ -65,60 +62,6 @@ class FileStoreUtil {
}
}
return null;
- }
-
- static boolean containSegment(List<TarReader> readers, SegmentId id) {
- return containSegment(readers, id.getMostSignificantBits(), id.getLeastSignificantBits());
- }
-
- /**
- * Check if a segment is contained in one of the provided TAR files.
- *
- * @param readers A list of {@link TarReader} instances.
- * @param msb Most significant bits of the segment ID.
- * @param lsb Least significant bits of the segment ID.
- * @return {@code true} if the segment is contained in at least one of the
- * provided TAR files, {@code false} otherwise.
- */
- static boolean containSegment(List<TarReader> readers, long msb, long lsb) {
- for (TarReader reader : readers) {
- if (reader.containsEntry(msb, lsb)) {
- return true;
- }
- }
- return false;
- }
-
- static ByteBuffer readEntry(List<TarReader> readers, SegmentId id) {
- return readEntry(readers, id.getMostSignificantBits(), id.getLeastSignificantBits());
- }
-
- /**
- * Read the entry corresponding to a segment from one of the provided TAR
- * files.
- *
- * @param readers A list of {@link TarReader} instances.
- * @param msb Most significant bits of the segment ID.
- * @param lsb Least significant bits of the segment ID.
- * @return An instance of {@link ByteBuffer} if the entry for the segment
- * could be found, {@code null} otherwise.
- */
- static ByteBuffer readEntry(List<TarReader> readers, long msb, long lsb) {
- for (TarReader reader : readers) {
- if (reader.isClosed()) {
- log.debug("Skipping closed tar file {}", reader);
- continue;
- }
- try {
- ByteBuffer buffer = reader.readEntry(msb, lsb);
- if (buffer != null) {
- return buffer;
- }
- } catch (IOException e) {
- log.warn("Failed to read from tar file {}", reader, e);
- }
- }
- return null;
}
}
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=1800258&r1=1800257&r2=1800258&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 Thu Jun 29 09:40:22 2017
@@ -24,6 +24,7 @@ import java.io.File;
import javax.annotation.Nonnull;
+import org.apache.jackrabbit.oak.segment.file.tar.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/ReadOnlyFileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java?rev=1800258&r1=1800257&r2=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java Thu Jun 29 09:40:22 2017
@@ -37,6 +37,7 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.SegmentGraph.SegmentGraphVisitor;
import org.apache.jackrabbit.oak.segment.SegmentId;
import org.apache.jackrabbit.oak.segment.SegmentWriter;
+import org.apache.jackrabbit.oak.segment.file.tar.TarFiles;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Added: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java?rev=1800258&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java (added)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java Thu Jun 29 09:40:22 2017
@@ -0,0 +1,31 @@
+/*
+ * 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;
+
+import java.io.IOException;
+import java.util.UUID;
+
+public interface EntryRecovery {
+
+ void recoverEntry(long msb, long lsb, byte[] data, int offset, int size, int generation) throws IOException;
+
+ void recoverGraphEdge(UUID from, UUID to);
+
+ void recoverBinaryReference(int generation, UUID segmentId, String reference);
+
+}
Propchange: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/EntryRecovery.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileAccess.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileAccess.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileAccess.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileAccess.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileAccess.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileAccess.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileAccess.java Thu Jun 29 09:40:22 2017
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment.file.tar;
import static com.google.common.base.Preconditions.checkState;
import static java.nio.channels.FileChannel.MapMode.READ_ONLY;
@@ -121,4 +121,4 @@ abstract class FileAccess {
}
-}
\ No newline at end of file
+}
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitor.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreMonitor.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitor.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitor.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreMonitor.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreMonitor.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitor.java Thu Jun 29 09:40:22 2017
@@ -17,29 +17,13 @@
* under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment.file.tar;
/**
* FileStoreMonitor are notified for any writes or deletes
* performed by FileStore
*/
-interface FileStoreMonitor {
- FileStoreMonitor DEFAULT = new FileStoreMonitor() {
- @Override
- public void written(long bytes) {
-
- }
-
- @Override
- public void reclaimed(long bytes) {
-
- }
-
- @Override
- public void flushed() {
-
- }
- };
+public interface FileStoreMonitor {
/**
* Notifies the monitor when data is written
@@ -59,4 +43,5 @@ interface FileStoreMonitor {
* Notifies the monitor when journal data is flushed to disk.
*/
void flushed();
+
}
Added: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitorAdapter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitorAdapter.java?rev=1800258&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitorAdapter.java (added)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitorAdapter.java Thu Jun 29 09:40:22 2017
@@ -0,0 +1,37 @@
+/*
+ * 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;
+
+public class FileStoreMonitorAdapter implements FileStoreMonitor {
+
+ @Override
+ public void written(long bytes) {
+ // Intentionally left blank
+ }
+
+ @Override
+ public void reclaimed(long bytes) {
+ // Intentionally left blank
+ }
+
+ @Override
+ public void flushed() {
+ // Intentionally left blank
+ }
+
+}
Propchange: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/FileStoreMonitorAdapter.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitor.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/IOMonitor.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitor.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitor.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/IOMonitor.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/IOMonitor.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitor.java Thu Jun 29 09:40:22 2017
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment.file.tar;
import java.io.File;
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitorAdapter.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/IOMonitorAdapter.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitorAdapter.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitorAdapter.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/IOMonitorAdapter.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/IOMonitorAdapter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/IOMonitorAdapter.java Thu Jun 29 09:40:22 2017
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment.file.tar;
import java.io.File;
Added: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarConstants.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarConstants.java?rev=1800258&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarConstants.java (added)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarConstants.java Thu Jun 29 09:40:22 2017
@@ -0,0 +1,28 @@
+/*
+ * 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;
+
+class TarConstants {
+
+ private TarConstants() {
+ // Prevent instantiation.
+ }
+
+ static final String FILE_NAME_FORMAT = "data%05d%s.tar";
+
+}
Propchange: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarConstants.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarEntry.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarEntry.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarEntry.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntry.java Thu Jun 29 09:40:22 2017
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment.file.tar;
import java.util.Comparator;
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntryVisitor.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarEntryVisitor.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntryVisitor.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntryVisitor.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarEntryVisitor.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarEntryVisitor.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarEntryVisitor.java Thu Jun 29 09:40:22 2017
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment.file.tar;
import java.io.File;
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/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?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarFiles.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarFiles.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java Thu Jun 29 09:40:22 2017
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment.file.tar;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -52,10 +52,11 @@ import com.google.common.base.Supplier;
import com.google.common.collect.Iterables;
import org.apache.jackrabbit.oak.plugins.blob.ReferenceCollector;
import org.apache.jackrabbit.oak.segment.SegmentGraph.SegmentGraphVisitor;
+import org.apache.jackrabbit.oak.segment.file.FileStoreStats;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-class TarFiles implements Closeable {
+public class TarFiles implements Closeable {
private static class Node {
@@ -70,7 +71,7 @@ class TarFiles implements Closeable {
}
- static class CleanupResult {
+ public static class CleanupResult {
private boolean interrupted;
@@ -84,25 +85,25 @@ class TarFiles implements Closeable {
// Prevent external instantiation.
}
- long getReclaimedSize() {
+ public long getReclaimedSize() {
return reclaimedSize;
}
- List<File> getRemovableFiles() {
+ public List<File> getRemovableFiles() {
return removableFiles;
}
- Set<UUID> getReclaimedSegmentIds() {
+ public Set<UUID> getReclaimedSegmentIds() {
return reclaimedSegmentIds;
}
- boolean isInterrupted() {
+ public boolean isInterrupted() {
return interrupted;
}
}
- static class Builder {
+ public static class Builder {
private File directory;
@@ -122,38 +123,38 @@ class TarFiles implements Closeable {
// Prevent external instantiation.
}
- Builder withDirectory(File directory) {
+ public Builder withDirectory(File directory) {
this.directory = checkNotNull(directory);
return this;
}
- Builder withMemoryMapping(boolean memoryMapping) {
+ public Builder withMemoryMapping(boolean memoryMapping) {
this.memoryMapping = memoryMapping;
return this;
}
- Builder withTarRecovery(TarRecovery tarRecovery) {
+ public Builder withTarRecovery(TarRecovery tarRecovery) {
this.tarRecovery = checkNotNull(tarRecovery);
return this;
}
- Builder withIOMonitor(IOMonitor ioMonitor) {
+ public Builder withIOMonitor(IOMonitor ioMonitor) {
this.ioMonitor = checkNotNull(ioMonitor);
return this;
}
- Builder withFileStoreStats(FileStoreStats fileStoreStats) {
+ public Builder withFileStoreStats(FileStoreStats fileStoreStats) {
this.fileStoreStats = checkNotNull(fileStoreStats);
return this;
}
- Builder withMaxFileSize(long maxFileSize) {
+ public Builder withMaxFileSize(long maxFileSize) {
checkArgument(maxFileSize > 0);
this.maxFileSize = maxFileSize;
return this;
}
- Builder withReadOnly() {
+ public Builder withReadOnly() {
this.readOnly = true;
return this;
}
@@ -253,7 +254,7 @@ class TarFiles implements Closeable {
} while (referencedIds.addAll(references));
}
- static Builder builder() {
+ public static Builder builder() {
return new Builder();
}
@@ -385,7 +386,7 @@ class TarFiles implements Closeable {
return String.format("TarFiles{readers=%s,writer=%s}", newArrayList(iterable(head)), w);
}
- long size() {
+ public long size() {
long size = 0;
Node head;
@@ -405,7 +406,7 @@ class TarFiles implements Closeable {
return size;
}
- int readerCount() {
+ public int readerCount() {
Node head;
lock.readLock().lock();
@@ -418,7 +419,7 @@ class TarFiles implements Closeable {
return Iterables.size(iterable(head));
}
- void flush() throws IOException {
+ public void flush() throws IOException {
lock.readLock().lock();
try {
writer.flush();
@@ -427,7 +428,7 @@ class TarFiles implements Closeable {
}
}
- boolean containsSegment(long msb, long lsb) {
+ public boolean containsSegment(long msb, long lsb) {
Node head;
lock.readLock().lock();
@@ -450,7 +451,7 @@ class TarFiles implements Closeable {
return false;
}
- ByteBuffer readSegment(long msb, long lsb) {
+ public ByteBuffer readSegment(long msb, long lsb) {
try {
Node head;
@@ -480,7 +481,7 @@ class TarFiles implements Closeable {
return null;
}
- void writeSegment(UUID id, byte[] buffer, int offset, int length, int generation, Set<UUID> references, Set<String> binaryReferences) throws IOException {
+ public void writeSegment(UUID id, byte[] buffer, int offset, int length, int generation, Set<UUID> references, Set<String> binaryReferences) throws IOException {
lock.writeLock().lock();
try {
long size = writer.writeEntry(
@@ -528,7 +529,7 @@ class TarFiles implements Closeable {
writer = newWriter;
}
- CleanupResult cleanup(Supplier<Set<UUID>> referencesSupplier, Predicate<Integer> reclaimPredicate) throws IOException {
+ public CleanupResult cleanup(Supplier<Set<UUID>> referencesSupplier, Predicate<Integer> reclaimPredicate) throws IOException {
CleanupResult result = new CleanupResult();
result.removableFiles = new ArrayList<>();
result.reclaimedSegmentIds = new HashSet<>();
@@ -668,7 +669,7 @@ class TarFiles implements Closeable {
return result;
}
- void collectBlobReferences(ReferenceCollector collector, Predicate<Integer> reclaim) throws IOException {
+ public void collectBlobReferences(ReferenceCollector collector, Predicate<Integer> reclaim) throws IOException {
Node head;
lock.writeLock().lock();
try {
@@ -685,7 +686,7 @@ class TarFiles implements Closeable {
}
}
- Iterable<UUID> getSegmentIds() {
+ public Iterable<UUID> getSegmentIds() {
Node head;
lock.readLock().lock();
@@ -702,7 +703,7 @@ class TarFiles implements Closeable {
return ids;
}
- Map<UUID, List<UUID>> getGraph(String fileName) throws IOException {
+ public Map<UUID, List<UUID>> getGraph(String fileName) throws IOException {
Node head;
lock.readLock().lock();
@@ -735,7 +736,7 @@ class TarFiles implements Closeable {
return result;
}
- Map<String, Set<UUID>> getIndices() {
+ public Map<String, Set<UUID>> getIndices() {
Node head;
lock.readLock().lock();
@@ -752,7 +753,7 @@ class TarFiles implements Closeable {
return index;
}
- void traverseSegmentGraph(Set<UUID> roots, SegmentGraphVisitor visitor) throws IOException {
+ public void traverseSegmentGraph(Set<UUID> roots, SegmentGraphVisitor visitor) throws IOException {
Node head;
lock.readLock().lock();
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarReader.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/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?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarReader.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarReader.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarReader.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarReader.java Thu Jun 29 09:40:22 2017
@@ -16,7 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+
+package org.apache.jackrabbit.oak.segment.file.tar;
import static com.google.common.base.Charsets.UTF_8;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -30,8 +31,6 @@ import static com.google.common.collect.
import static java.nio.ByteBuffer.wrap;
import static java.util.Collections.singletonList;
import static org.apache.jackrabbit.oak.segment.SegmentId.isDataSegmentId;
-import static org.apache.jackrabbit.oak.segment.file.TarWriter.BINARY_REFERENCES_MAGIC;
-import static org.apache.jackrabbit.oak.segment.file.TarWriter.GRAPH_MAGIC;
import java.io.Closeable;
import java.io.File;
@@ -213,7 +212,24 @@ class TarReader implements Closeable {
try (TarWriter writer = new TarWriter(file, ioMonitor)) {
for (Entry<UUID, byte[]> entry : entries.entrySet()) {
try {
- recovery.recoverEntry(entry.getKey(), entry.getValue(), writer);
+ recovery.recoverEntry(entry.getKey(), entry.getValue(), new EntryRecovery() {
+
+ @Override
+ public void recoverEntry(long msb, long lsb, byte[] data, int offset, int size, int generation) throws IOException {
+ writer.writeEntry(msb, lsb, data, offset, size, generation);
+ }
+
+ @Override
+ public void recoverGraphEdge(UUID from, UUID to) {
+ writer.addGraphEdge(from, to);
+ }
+
+ @Override
+ public void recoverBinaryReference(int generation, UUID segmentId, String reference) {
+ writer.addBinaryReference(generation, segmentId, reference);
+ }
+
+ });
} catch (IOException e) {
throw new IOException(String.format("Unable to recover entry %s for file %s", entry.getKey(), file), e);
}
@@ -996,7 +1012,7 @@ class TarReader implements Closeable {
int size = meta.getInt();
int magic = meta.getInt();
- if (magic != BINARY_REFERENCES_MAGIC) {
+ if (magic != TarWriter.BINARY_REFERENCES_MAGIC) {
log.warn("Invalid binary references magic number");
return null;
}
@@ -1076,7 +1092,7 @@ class TarReader implements Closeable {
int bytes = meta.getInt();
int magic = meta.getInt();
- if (magic != GRAPH_MAGIC) {
+ if (magic != TarWriter.GRAPH_MAGIC) {
log.warn("Invalid graph magic number in {}", file);
return null;
}
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarRecovery.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRecovery.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarRecovery.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarRecovery.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRecovery.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRecovery.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarRecovery.java Thu Jun 29 09:40:22 2017
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment.file.tar;
import java.io.IOException;
import java.util.UUID;
@@ -23,7 +23,7 @@ import java.util.UUID;
/**
* A strategy for the recovery of segments.
*/
-interface TarRecovery {
+public interface TarRecovery {
/**
* Recover the data and meta-data of the given segment. The implementor of
@@ -33,10 +33,10 @@ interface TarRecovery {
*
* @param uuid the identifier of the segment.
* @param data the raw data of the segment.
- * @param writer the destination of the recovered data.
+ * @param entryRecovery the destination of the recovered data.
* @throws IOException if an I/O error occurs while recovering the data of
* the segment.
*/
- void recoverEntry(UUID uuid, byte[] data, TarWriter writer) throws IOException;
+ void recoverEntry(UUID uuid, byte[] data, EntryRecovery entryRecovery) throws IOException;
}
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriter.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/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?p2=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriter.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarWriter.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriter.java Thu Jun 29 09:40:22 2017
@@ -16,7 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+
+package org.apache.jackrabbit.oak.segment.file.tar;
import static com.google.common.base.Charsets.UTF_8;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -26,7 +27,7 @@ import static com.google.common.collect.
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.FileStore.FILE_NAME_FORMAT;
+import static org.apache.jackrabbit.oak.segment.file.tar.TarConstants.FILE_NAME_FORMAT;
import java.io.Closeable;
import java.io.File;
@@ -168,7 +169,7 @@ class TarWriter implements Closeable {
*/
TarWriter(File file, IOMonitor ioMonitor) {
this.file = file;
- this.monitor = FileStoreMonitor.DEFAULT;
+ this.monitor = new FileStoreMonitorAdapter();
this.writeIndex = -1;
this.ioMonitor = ioMonitor;
}
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=1800258&r1=1800257&r2=1800258&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 Thu Jun 29 09:40:22 2017
@@ -50,7 +50,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.FileStoreBuilder;
-import org.apache.jackrabbit.oak.segment.file.IOMonitorAdapter;
+import org.apache.jackrabbit.oak.segment.file.tar.IOMonitorAdapter;
import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
import org.apache.jackrabbit.oak.segment.file.JournalEntry;
import org.apache.jackrabbit.oak.segment.file.JournalReader;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreStatsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreStatsTest.java?rev=1800258&r1=1800257&r2=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreStatsTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/FileStoreStatsTest.java Thu Jun 29 09:40:22 2017
@@ -19,13 +19,11 @@
package org.apache.jackrabbit.oak.segment.file;
-import static com.google.common.base.Charsets.UTF_8;
import static org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.fileStoreBuilder;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import java.io.File;
-import java.util.UUID;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@@ -71,31 +69,6 @@ public class FileStoreStatsTest {
}
@Test
- public void tarWriterIntegration() throws Exception{
- StatisticsProvider statsProvider = new DefaultStatisticsProvider(executor);
- File directory = segmentFolder.newFolder();
- FileStore store = fileStoreBuilder(directory)
- .withStatisticsProvider(statsProvider)
- .build();
- FileStoreStats stats = new FileStoreStats(statsProvider, store, 0);
- try {
- long initialSize = stats.getApproximateSize();
- UUID id = UUID.randomUUID();
- long msb = id.getMostSignificantBits();
- long lsb = id.getLeastSignificantBits() & (-1 >>> 4); // OAK-1672
- byte[] data = "Hello, World!".getBytes(UTF_8);
-
- try (TarWriter writer = new TarWriter(directory, stats, 0, new IOMonitorAdapter())) {
- writer.writeEntry(msb, lsb, data, 0, data.length, 0);
- assertEquals(stats.getApproximateSize() - initialSize, writer.fileLength());
- }
- } finally {
- store.close();
- }
- assertEquals(1, stats.getJournalWriteStatsAsCount());
- }
-
- @Test
public void testJournalWriteStats() throws Exception {
StatisticsProvider statsProvider = new DefaultStatisticsProvider(executor);
FileStore fileStore = fileStoreBuilder(segmentFolder.newFolder()).withStatisticsProvider(statsProvider).build();
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFileTest.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarFileTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFileTest.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFileTest.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarFileTest.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarFileTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFileTest.java Thu Jun 29 09:40:22 2017
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment.file.tar;
import static com.google.common.base.Charsets.UTF_8;
import static com.google.common.collect.Lists.newArrayList;
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java (from r1800257, jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarWriterTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarWriterTest.java&r1=1800257&r2=1800258&rev=1800258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/TarWriterTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarWriterTest.java Thu Jun 29 09:40:22 2017
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment.file.tar;
import static com.google.common.base.Charsets.UTF_8;
import static org.junit.Assert.assertEquals;
@@ -40,7 +40,7 @@ public class TarWriterTest {
@Test
public void createNextGenerationTest() throws IOException {
int counter = 2222;
- TarWriter t0 = new TarWriter(folder.newFolder(), FileStoreMonitor.DEFAULT, counter, new IOMonitorAdapter());
+ TarWriter t0 = new TarWriter(folder.newFolder(), new FileStoreMonitorAdapter(), counter, new IOMonitorAdapter());
// not dirty, will not create a new writer
TarWriter t1 = t0.createNextGeneration();
@@ -60,4 +60,28 @@ public class TarWriterTest {
assertTrue(t2.getFile().getName().contains("" + (counter + 1)));
}
+ private static class TestFileStoreMonitor extends FileStoreMonitorAdapter {
+
+ long written;
+
+ @Override
+ public void written(long bytes) {
+ written += bytes;
+ }
+
+ }
+
+ @Test
+ public void testFileStoreMonitor() throws Exception {
+ TestFileStoreMonitor monitor = new TestFileStoreMonitor();
+ try (TarWriter writer = new TarWriter(folder.getRoot(), monitor, 0, new IOMonitorAdapter())) {
+ long sizeBefore = writer.fileLength();
+ long writtenBefore = monitor.written;
+ writer.writeEntry(0, 0, new byte[42], 0, 42, 0);
+ long sizeAfter = writer.fileLength();
+ long writtenAfter = monitor.written;
+ assertEquals(sizeAfter - sizeBefore, writtenAfter - writtenBefore);
+ }
+ }
+
}