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/04/22 14:51:16 UTC

svn commit: r1740503 - in /jackrabbit/oak/trunk/oak-segment-next/src: main/java/org/apache/jackrabbit/oak/segment/ main/java/org/apache/jackrabbit/oak/segment/file/ test/java/org/apache/jackrabbit/oak/backup/

Author: mduerig
Date: Fri Apr 22 12:51:15 2016
New Revision: 1740503

URL: http://svn.apache.org/viewvc?rev=1740503&view=rev
Log:
OAK-3348: Cross gc sessions might introduce references to pre-compacted segments
Update issue references in FIXME tags to point to actual issues where they already exist

Modified:
    jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java
    jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
    jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
    jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
    jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
    jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
    jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java

Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java Fri Apr 22 12:51:15 2016
@@ -175,8 +175,6 @@ public class SegmentBlob extends Record
             return true;
         }
 
-        // FIXME OAK-3348 check / test deduplication of large SegmentBlob instances
-        // FIXME OAK-3348 Can we do something similar for long strings?
         if (object instanceof SegmentBlob) {
             SegmentBlob that = (SegmentBlob) object;
             if (this.length() != that.length()) {

Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java Fri Apr 22 12:51:15 2016
@@ -29,7 +29,6 @@ import static com.google.common.collect.
 import static java.lang.System.arraycopy;
 import static java.lang.System.currentTimeMillis;
 import static java.lang.System.identityHashCode;
-import static org.apache.jackrabbit.oak.segment.RecordWriters.newValueWriter;
 import static org.apache.jackrabbit.oak.segment.Segment.GC_GEN_OFFSET;
 import static org.apache.jackrabbit.oak.segment.Segment.MAX_SEGMENT_SIZE;
 import static org.apache.jackrabbit.oak.segment.Segment.RECORD_ID_BYTES;

Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java Fri Apr 22 12:51:15 2016
@@ -195,8 +195,9 @@ public class SegmentNodeStore implements
      *          of {@code c.call()} otherwise.
      * @throws Exception
      */
-    // FIXME OAK-3348 Remove and use an exclusive locking mechanism of the FileStore
-    // instead. See FileStore.forceCompact
+    // FIXME OAK-4015: Expedite commits from the compactor
+    // FIXME OAK-4122: Replace the commit semaphore in the segment node store with a scheduler
+    // Replace by usage of expeditable lock or commit scheduler
     boolean locked(Callable<Boolean> c) throws Exception {
         if (commitSemaphore.tryAcquire()) {
             try {
@@ -217,8 +218,9 @@ public class SegmentNodeStore implements
      *          of {@code c.call()} otherwise.
      * @throws Exception
      */
-    // FIXME OAK-3348 Remove and use an exclusive locking mechanism of the FileStore
-    // instead. See FileStore.forceCompact
+    // FIXME OAK-4015: Expedite commits from the compactor
+    // FIXME OAK-4122: Replace the commit semaphore in the segment node store with a scheduler
+    // Replace by usage of expeditable lock or commit scheduler
     boolean locked(Callable<Boolean> c, long timeout, TimeUnit unit) throws Exception {
         if (commitSemaphore.tryAcquire(timeout, unit)) {
             try {

Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java Fri Apr 22 12:51:15 2016
@@ -249,9 +249,9 @@ public class SegmentTracker {
         segmentCache.put(id, segment, segment.size());
     }
 
-    // FIXME OAK-3348 Improve retrieving current GC generation.
-    // See also the comments in FileStore regarding initialisation and
-    // cyclic dependencies.
+    // FIXME OAK-4102: Break cyclic dependency of FileStore and SegmentTracker
+    // Improve retrieving current GC generation. (OAK-4102)
+    // See also the comments in FileStore regarding initialisation and cyclic dependencies.
     public int getGcGen() {
         if (store instanceof FileStore) {
             return ((FileStore) store).getGcGen();

Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java Fri Apr 22 12:51:15 2016
@@ -71,7 +71,8 @@ import org.slf4j.LoggerFactory;
  * Converts nodes, properties, and values to records, which are written to segments.
  * FIXME OAK-3348 doc thread safety properties
  */
-// FIXME OAK-3348 Improve the way how SegmentWriter instances are created.
+// FIXME OAK-4102: Break cyclic dependency of FileStore and SegmentTracker
+// Improve the way how SegmentWriter instances are created. (OAK-4102)
 public class SegmentWriter {
     private static final Logger LOG = LoggerFactory.getLogger(SegmentWriter.class);
 

Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java Fri Apr 22 12:51:15 2016
@@ -393,7 +393,7 @@ public class FileStore implements Segmen
             checkNotNull(builder.directory).mkdirs();
         }
 
-        // FIXME OAK-3348 Improve the setup of FileStore and SegmentTracker.
+        // FIXME OAK-4102: Break cyclic dependency of FileStore and SegmentTracker
         // SegmentTracker and FileStore have a cyclic dependency, which we should
         // try to break. Here we pass along a not fully initialised instances of the
         // FileStore to the SegmentTracker, which in turn is in later invoked to write
@@ -551,8 +551,9 @@ public class FileStore implements Segmen
         log.debug("TarMK readers {}", this.readers);
     }
 
-    // FIXME OAK-3348 hack: We cannot determine the current GC generation before
-    // the FileStore is fully initialised so just return 0 for now.
+    // FIXME OAK-4102: Break cyclic dependency of FileStore and SegmentTracker
+    // We cannot determine the current GC generation before the FileStore is fully
+    // initialised so just return 0 for now.
     public int getGcGen() {
         if (head == null) {
             return 0;  // not fully initialised
@@ -885,7 +886,7 @@ public class FileStore implements Segmen
         Set<UUID> reclaim = newHashSet();
         for (TarReader reader : cleaned.keySet()) {
             reader.mark(bulkRefs, reclaim, generation);
-            // FIXME OAK-3348 log at debug level
+            // FIXME OAK-4165: Too verbose logging during revision gc
             log.info("Size of bulk references/reclaim set {}/{}", bulkRefs.size(), reclaim.size());
             if (shutdown) {
                 gcMonitor.info("TarMK GC #{}: cleanup interrupted", gcCount);
@@ -1138,8 +1139,8 @@ public class FileStore implements Segmen
         return new SegmentNodeState(head.get());
     }
 
-    // FIXME OAK-3348 Maybe us a lock implementation that could expedite important commits
-    // like compaction and checkpoints. See OAK-4015. Needs to be evaluated.
+    // FIXME OAK-4015: Expedite commits from the compactor
+    // use a lock that can expedite important commits like compaction and checkpoints.
     private ReadWriteLock rwLock = new ReentrantReadWriteLock();
 
     @Override

Modified: jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java Fri Apr 22 12:51:15 2016
@@ -30,8 +30,6 @@ import java.util.Random;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.backup.FileStoreBackup;
-import org.apache.jackrabbit.oak.backup.FileStoreRestore;
 import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
 import org.apache.jackrabbit.oak.segment.file.FileStore;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;