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/10/24 16:22:02 UTC

svn commit: r1766430 - in /jackrabbit/oak/trunk/oak-segment-tar/src: main/java/org/apache/jackrabbit/oak/backup/impl/ main/java/org/apache/jackrabbit/oak/segment/ main/java/org/apache/jackrabbit/oak/segment/compaction/ main/java/org/apache/jackrabbit/o...

Author: mduerig
Date: Mon Oct 24 16:22:02 2016
New Revision: 1766430

URL: http://svn.apache.org/viewvc?rev=1766430&view=rev
Log:
OAK-4990: SegmentBufferWriter should not depend on SegmentTracker
Replace dependency on SegmentTracker with a supplier for the segment number

Modified:
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriterBuilder.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.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/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java?rev=1766430&r1=1766429&r2=1766430&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreBackupImpl.java Mon Oct 24 16:22:02 2016
@@ -69,7 +69,7 @@ public class FileStoreBackupImpl impleme
             int gen = current.getRecordId().getSegmentId().getGcGeneration();
             SegmentBufferWriter bufferWriter = new SegmentBufferWriter(
                     backup,
-                    backup.getTracker(),
+                    backup.getTracker().getSegmentCounter(),
                     backup.getReader(),
                     "b",
                     gen

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java?rev=1766430&r1=1766429&r2=1766430&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java Mon Oct 24 16:22:02 2016
@@ -63,7 +63,7 @@ public class FileStoreRestoreImpl implem
             int gen = head.getRecordId().getSegmentId().getGcGeneration();
             SegmentBufferWriter bufferWriter = new SegmentBufferWriter(
                     store,
-                    store.getTracker(),
+                    store.getTracker().getSegmentCounter(),
                     store.getReader(),
                     "r",
                     gen

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java?rev=1766430&r1=1766429&r2=1766430&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java Mon Oct 24 16:22:02 2016
@@ -43,6 +43,7 @@ import java.util.Set;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
+import com.google.common.base.Supplier;
 import org.apache.jackrabbit.oak.segment.RecordNumbers.Entry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -115,7 +116,7 @@ public class SegmentBufferWriter impleme
     private final SegmentStore store;
 
     @Nonnull
-    private final SegmentTracker tracker;
+    private final Supplier<Integer> segmentCounter;
 
     @Nonnull
     private final SegmentReader reader;
@@ -157,12 +158,12 @@ public class SegmentBufferWriter impleme
     private boolean dirty;
 
     public SegmentBufferWriter(@Nonnull SegmentStore store,
-                               @Nonnull SegmentTracker tracker,
+                               @Nonnull Supplier<Integer> segmentCounter,
                                @Nonnull SegmentReader reader,
                                @CheckForNull String wid,
                                int generation) {
         this.store = checkNotNull(store);
-        this.tracker = checkNotNull(tracker);
+        this.segmentCounter = checkNotNull(segmentCounter);
         this.reader = checkNotNull(reader);
         this.wid = (wid == null
                 ? "w-" + identityHashCode(this)
@@ -214,7 +215,7 @@ public class SegmentBufferWriter impleme
 
         String metaInfo =
             "{\"wid\":\"" + wid + '"' +
-            ",\"sno\":" + tracker.getSegmentCount() +
+            ",\"sno\":" + segmentCounter.get() +
             ",\"t\":" + currentTimeMillis() + "}";
         try {
             segment = new Segment(store, reader, buffer, recordNumbers, segmentReferences, metaInfo);

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java?rev=1766430&r1=1766429&r2=1766430&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java Mon Oct 24 16:22:02 2016
@@ -191,7 +191,7 @@ public class SegmentBufferWriterPool imp
             if (writer == null) {
                 writer = new SegmentBufferWriter(
                         store,
-                        tracker,
+                        tracker.getSegmentCounter(),
                         reader,
                         getWriterId(wid),
                         gcGeneration.get()
@@ -200,7 +200,7 @@ public class SegmentBufferWriterPool imp
                 disposed.add(writer);
                 writer = new SegmentBufferWriter(
                         store,
-                        tracker,
+                        tracker.getSegmentCounter(),
                         reader,
                         getWriterId(wid),
                         gcGeneration.get()

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java?rev=1766430&r1=1766429&r2=1766430&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java Mon Oct 24 16:22:02 2016
@@ -27,6 +27,8 @@ import java.util.concurrent.atomic.Atomi
 
 import javax.annotation.Nonnull;
 
+import com.google.common.base.Supplier;
+
 /**
  * Tracker of references to segment identifiers and segment instances
  * that are currently kept in memory and factory for creating {@link SegmentId}
@@ -77,8 +79,13 @@ public class SegmentTracker {
      * Number of segment tracked since this tracker was instantiated
      * @return count
      */
-    int getSegmentCount() {
-        return segmentCounter.get();
+    public Supplier<Integer> getSegmentCounter() {
+        return new Supplier<Integer>() {
+            @Override
+            public Integer get() {
+                return segmentCounter.get();
+            }
+        };
     }
 
     /**

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriterBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriterBuilder.java?rev=1766430&r1=1766429&r2=1766430&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriterBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriterBuilder.java Mon Oct 24 16:22:02 2016
@@ -193,7 +193,7 @@ public final class SegmentWriterBuilder
         } else {
             return new SegmentBufferWriter(
                     store,
-                    store.getTracker(),
+                    store.getTracker().getSegmentCounter(),
                     store.getReader(),
                     name,
                     generation.get()
@@ -214,7 +214,7 @@ public final class SegmentWriterBuilder
         } else {
             return new SegmentBufferWriter(
                     store,
-                    store.getTracker(),
+                    store.getTracker().getSegmentCounter(),
                     store.getReader(),
                     name,
                     generation.get()
@@ -235,7 +235,7 @@ public final class SegmentWriterBuilder
         } else {
             return new SegmentBufferWriter(
                     store,
-                    store.getTracker(),
+                    store.getTracker().getSegmentCounter(),
                     store.getReader(),
                     name,
                     generation.get()

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java?rev=1766430&r1=1766429&r2=1766430&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java Mon Oct 24 16:22:02 2016
@@ -21,8 +21,6 @@ package org.apache.jackrabbit.oak.segmen
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import java.io.IOException;
-
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 

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=1766430&r1=1766429&r2=1766430&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 Oct 24 16:22:02 2016
@@ -838,7 +838,8 @@ public class FileStore extends AbstractF
 
                 SegmentNodeState before = getHead();
                 final int newGeneration = getGcGeneration() + 1;
-                SegmentBufferWriter bufferWriter = new SegmentBufferWriter(FileStore.this, tracker, segmentReader, "c", newGeneration);
+                SegmentBufferWriter bufferWriter = new SegmentBufferWriter(
+                        FileStore.this, tracker.getSegmentCounter(), segmentReader, "c", newGeneration);
                 Supplier<Boolean> cancel = new CancelCompactionSupplier(FileStore.this);
                 SegmentNodeState after = compact(bufferWriter, before, cancel);
                 if (after == null) {

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=1766430&r1=1766429&r2=1766430&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 Oct 24 16:22:02 2016
@@ -436,7 +436,7 @@ public class RecordTest {
         NodeBuilder builder = EMPTY_NODE.builder();
         SegmentBufferWriter bufferWriter = new SegmentBufferWriter(
                 store,
-                store.getTracker(),
+                store.getTracker().getSegmentCounter(),
                 store.getReader(),
                 "test",
                 0