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 md...@apache.org on 2016/01/12 18:21:04 UTC

svn commit: r1724289 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/backup/ main/java/org/apache/jackrabbit/oak/plugins/segment/ main/java/org/apache/jackrabbit/oak/plugins/segment/file/ test/java/org/apache/jackra...

Author: mduerig
Date: Tue Jan 12 17:21:04 2016
New Revision: 1724289

URL: http://svn.apache.org/viewvc?rev=1724289&view=rev
Log:
OAK-3868: Move createSegmentWriter() from FileStore to SegmentTracker
Move method and adapt call sites

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/PersistedCompactionMap.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/package-info.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactorTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java Tue Jan 12 17:21:04 2016
@@ -77,7 +77,7 @@ public class FileStoreBackup {
                 }
             }
 
-            Compactor compactor = new Compactor(backup);
+            Compactor compactor = new Compactor(backup.getTracker());
             SegmentNodeState after = compactor.compact(before, current);
 
             // 4. commit the backup

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java Tue Jan 12 17:21:04 2016
@@ -74,7 +74,7 @@ public class FileStoreRestore {
     private static class RestoreCompactor extends Compactor {
 
         public RestoreCompactor(SegmentStore store) {
-            super(store);
+            super(store.getTracker());
         }
 
         @Override

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java Tue Jan 12 17:21:04 2016
@@ -42,7 +42,6 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.memory.MultiBinaryPropertyState;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
 import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy;
-import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
 import org.apache.jackrabbit.oak.spi.state.ApplyDiff;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -98,28 +97,28 @@ public class Compactor {
      */
     private final Supplier<Boolean> cancel;
 
-    public Compactor(SegmentStore store) {
-        this(store, Suppliers.ofInstance(false));
+    public Compactor(SegmentTracker tracker) {
+        this(tracker, Suppliers.ofInstance(false));
     }
 
-    public Compactor(SegmentStore store, Supplier<Boolean> cancel) {
-        this.writer = store.getTracker().getWriter();
-        this.map = new InMemoryCompactionMap(store.getTracker());
+    public Compactor(SegmentTracker tracker, Supplier<Boolean> cancel) {
+        this.writer = tracker.getWriter();
+        this.map = new InMemoryCompactionMap(tracker);
         this.cloneBinaries = false;
         this.cancel = cancel;
     }
 
-    public Compactor(FileStore store, CompactionStrategy compactionStrategy) {
-        this(store, compactionStrategy, Suppliers.ofInstance(false));
+    public Compactor(SegmentTracker tracker, CompactionStrategy compactionStrategy) {
+        this(tracker, compactionStrategy, Suppliers.ofInstance(false));
     }
 
-    public Compactor(FileStore store, CompactionStrategy compactionStrategy, Supplier<Boolean> cancel) {
-        String wid = "c-" + store.getTracker().getCompactionMap().getGeneration() + 1;
-        this.writer = store.createSegmentWriter(wid);
+    public Compactor(SegmentTracker tracker, CompactionStrategy compactionStrategy, Supplier<Boolean> cancel) {
+        String wid = "c-" + tracker.getCompactionMap().getGeneration() + 1;
+        this.writer = tracker.createSegmentWriter(wid);
         if (compactionStrategy.getPersistCompactionMap()) {
-            this.map = new PersistedCompactionMap(store);
+            this.map = new PersistedCompactionMap(tracker);
         } else {
-            this.map = new InMemoryCompactionMap(store.getTracker());
+            this.map = new InMemoryCompactionMap(tracker);
         }
         this.cloneBinaries = compactionStrategy.cloneBinaries();
         if (compactionStrategy.isOfflineCompaction()) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/PersistedCompactionMap.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/PersistedCompactionMap.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/PersistedCompactionMap.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/PersistedCompactionMap.java Tue Jan 12 17:21:04 2016
@@ -35,7 +35,6 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -68,13 +67,13 @@ public class PersistedCompactionMap impl
 
     private final TreeMap<UUID, RecordIdMap> recent = newTreeMap();
 
-    private final FileStore store;
+    private final SegmentTracker tracker;
 
     private long recordCount;
     private MapRecord entries;
 
-    PersistedCompactionMap(@Nonnull FileStore store) {
-        this.store = store;
+    PersistedCompactionMap(@Nonnull SegmentTracker tracker) {
+        this.tracker = tracker;
     }
 
     @Override
@@ -103,7 +102,7 @@ public class PersistedCompactionMap impl
             return recordId;
         }
 
-        return get(store.getTracker(), entries, uuid, offset);
+        return get(tracker, entries, uuid, offset);
     }
 
     @CheckForNull
@@ -198,7 +197,7 @@ public class PersistedCompactionMap impl
                 base = baseEntry == null ? null : new MapRecord(baseEntry.getValue());
 
                 if (writer == null) {
-                    writer = store.createSegmentWriter(createWid());
+                    writer = tracker.createSegmentWriter(createWid());
                 }
 
                 Map<String, RecordId> offsetMap = newHashMap();
@@ -223,7 +222,7 @@ public class PersistedCompactionMap impl
 
             if (!segmentIdMap.isEmpty()) {
                 if (writer == null) {
-                    writer = store.createSegmentWriter(createWid());
+                    writer = tracker.createSegmentWriter(createWid());
                 }
 
                 RecordId previousBaseId = entries == null ? null : entries.getRecordId();
@@ -248,7 +247,7 @@ public class PersistedCompactionMap impl
 
     @Nonnull
     private String createWid() {
-        return "cm-" + store.getTracker().getCompactionMap().getGeneration() + 1;
+        return "cm-" + tracker.getCompactionMap().getGeneration() + 1;
     }
 
     /**

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java Tue Jan 12 17:21:04 2016
@@ -69,7 +69,7 @@ public class SegmentNodeBuilder extends
         this.updateCount = 0;
     }
 
-    SegmentNodeBuilder(SegmentNodeBuilder parent, String name,
+    private SegmentNodeBuilder(SegmentNodeBuilder parent, String name,
             SegmentWriter writer) {
         super(parent, name);
         this.writer = writer;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java Tue Jan 12 17:21:04 2016
@@ -113,8 +113,12 @@ public class SegmentTracker {
      */
     private final AtomicInteger segmentCounter = new AtomicInteger();
 
+    private final SegmentVersion segmentVersion;
+
     public SegmentTracker(SegmentStore store, int cacheSizeMB,
             SegmentVersion version) {
+        this.segmentVersion = version;
+
         for (int i = 0; i < tables.length; i++) {
             tables[i] = new SegmentIdTable(this);
         }
@@ -122,7 +126,7 @@ public class SegmentTracker {
         this.store = store;
         this.compactionMap = new AtomicReference<CompactionMap>(
                 CompactionMap.EMPTY);
-        this.writer = new SegmentWriter(store, version, "sys");
+        this.writer = createSegmentWriter("sys");
         StringCache c;
         if (DISABLE_STRING_CACHE) {
             c = null;
@@ -161,6 +165,13 @@ public class SegmentTracker {
         return segmentCounter.incrementAndGet();
     }
 
+    /**
+     * @return  a new {@link SegmentWriter} instance for writing to this store.
+     */
+    public final SegmentWriter createSegmentWriter(String wid) {
+        return new SegmentWriter(store, segmentVersion, wid);
+    }
+
     @Nonnull
     public CacheStats getSegmentCacheStats() {
         return new CacheStats(segmentCache, "Segment Cache", null, -1);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java Tue Jan 12 17:21:04 2016
@@ -76,7 +76,6 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentTracker;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentVersion;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentWriter;
 import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.gc.GCMonitor;
@@ -935,13 +934,6 @@ public class FileStore implements Segmen
     }
 
     /**
-     * @return  a new {@link SegmentWriter} instance for writing to this store.
-     */
-    public SegmentWriter createSegmentWriter(String wid) {
-        return new SegmentWriter(this, getVersion(), wid);
-    }
-
-    /**
      * Returns the cancellation policy for the compaction phase. If the disk
      * space was considered insufficient at least once during compaction (or if
      * the space was never sufficient to begin with), compaction is considered
@@ -1009,7 +1001,7 @@ public class FileStore implements Segmen
         gcMonitor.info("TarMK GC #{}: compaction started, strategy={}", gcCount, compactionStrategy);
         Stopwatch watch = Stopwatch.createStarted();
         Supplier<Boolean> compactionCanceled = newCancelCompactionCondition();
-        Compactor compactor = new Compactor(this, compactionStrategy, compactionCanceled);
+        Compactor compactor = new Compactor(tracker, compactionStrategy, compactionCanceled);
         SegmentNodeState before = getHead();
         long existing = before.getChildNode(SegmentNodeStore.CHECKPOINTS)
                 .getChildNodeCount(Long.MAX_VALUE);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/package-info.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/package-info.java Tue Jan 12 17:21:04 2016
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("4.1.0")
+@Version("5.0.0")
 @Export(optional = "provide:=true")
 package org.apache.jackrabbit.oak.plugins.segment.file;
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java Tue Jan 12 17:21:04 2016
@@ -84,7 +84,7 @@ public class CompactionMapTest {
 
     private PartialCompactionMap createCompactionMap(boolean persisted) {
         if (persisted) {
-            return new PersistedCompactionMap(store);
+            return new PersistedCompactionMap(store.getTracker());
         } else {
             return new InMemoryCompactionMap(store.getTracker());
         }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactorTest.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactorTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactorTest.java Tue Jan 12 17:21:04 2016
@@ -54,7 +54,7 @@ public class CompactorTest {
         NodeStore store = new SegmentNodeStore(segmentStore);
         init(store);
 
-        Compactor compactor = new Compactor(segmentStore);
+        Compactor compactor = new Compactor(segmentStore.getTracker());
         addTestContent(store, 0);
 
         NodeState initial = store.getRoot();
@@ -75,7 +75,7 @@ public class CompactorTest {
         // doesn't have the child named "b".
 
         NodeStore store = SegmentNodeStore.newSegmentNodeStore(segmentStore).create();
-        Compactor compactor = new Compactor(segmentStore, Suppliers.ofInstance(true));
+        Compactor compactor = new Compactor(segmentStore.getTracker(), Suppliers.ofInstance(true));
         SegmentNodeState sns = compactor.compact(store.getRoot(), addChild(store.getRoot(), "b"), store.getRoot());
         assertFalse(sns.hasChildNode("b"));
     }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java Tue Jan 12 17:21:04 2016
@@ -122,7 +122,7 @@ public class PartialCompactionMapTest {
     private PartialCompactionMap createCompactionMap() {
         SegmentWriter writer = new SegmentWriter(segmentStore, V_11, "");
         if (usePersistedMap) {
-            return new PersistedCompactionMap(segmentStore);
+            return new PersistedCompactionMap(segmentStore.getTracker());
         } else {
             return new InMemoryCompactionMap(segmentStore.getTracker());
         }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java Tue Jan 12 17:21:04 2016
@@ -134,7 +134,7 @@ public class FileStoreIT {
         assertTrue(store.setHead(base, head));
         assertEquals("bar", store.getHead().getString("foo"));
 
-        Compactor compactor = new Compactor(store);
+        Compactor compactor = new Compactor(store.getTracker());
         SegmentNodeState compacted =
                 compactor.compact(EMPTY_NODE, head, EMPTY_NODE);
         store.close();
@@ -163,7 +163,7 @@ public class FileStoreIT {
         head = store.getHead();
         assertTrue(store.size() > largeBinarySize);
         writer = new SegmentWriter(store, V_11, "");
-        compactor = new Compactor(store);
+        compactor = new Compactor(store.getTracker());
         compacted = compactor.compact(EMPTY_NODE, head, EMPTY_NODE);
         builder = head.builder();
         builder.setChildNode("old", head); // reference to pre-compacted state