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/06/10 14:09:35 UTC

svn commit: r1747713 - in /jackrabbit/oak/trunk: oak-run/src/main/java/org/apache/jackrabbit/oak/run/ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/ oak-segment-tar/src/t...

Author: mduerig
Date: Fri Jun 10 14:09:35 2016
New Revision: 1747713

URL: http://svn.apache.org/viewvc?rev=1747713&view=rev
Log:
OAK-4463: Remove SegmentNodeStore.getSuperRoot()
Replace the remaining usage of that method with Revisions.getHeadState

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackupRestore.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java?rev=1747713&r1=1747712&r2=1747713&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java Fri Jun 10 14:09:35 2016
@@ -127,8 +127,7 @@ final class SegmentTarUtils {
                 fs = openReadOnlyFileStore(source);
             }
             closer.register(fs);
-            NodeStore store = SegmentNodeStoreBuilders.builder(fs).build();
-            FileStoreBackup.backup(store, target);
+            FileStoreBackup.backup(fs.getReader(), target);
         } catch (Throwable e) {
             throw closer.rethrow(e);
         } finally {

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java?rev=1747713&r1=1747712&r2=1747713&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java Fri Jun 10 14:09:35 2016
@@ -19,29 +19,28 @@
 
 package org.apache.jackrabbit.oak.backup;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.fileStoreBuilder;
 
 import java.io.File;
 import java.io.IOException;
 
+import javax.annotation.Nonnull;
+
+import com.google.common.base.Stopwatch;
+import com.google.common.base.Suppliers;
 import org.apache.jackrabbit.oak.segment.Compactor;
 import org.apache.jackrabbit.oak.segment.SegmentBufferWriter;
 import org.apache.jackrabbit.oak.segment.SegmentNodeState;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStore;
+import org.apache.jackrabbit.oak.segment.SegmentReader;
 import org.apache.jackrabbit.oak.segment.SegmentWriter;
 import org.apache.jackrabbit.oak.segment.WriterCacheManager;
 import org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions;
 import org.apache.jackrabbit.oak.segment.file.FileStore;
 import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
 import org.apache.jackrabbit.oak.segment.file.tooling.BasicReadOnlyBlobStore;
-import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Stopwatch;
-import com.google.common.base.Suppliers;
-
 public class FileStoreBackup {
 
     private static final Logger log = LoggerFactory
@@ -50,9 +49,9 @@ public class FileStoreBackup {
     public static boolean USE_FAKE_BLOBSTORE = Boolean
             .getBoolean("oak.backup.UseFakeBlobStore");
 
-    public static void backup(NodeStore store, File destination)
+    public static void backup(@Nonnull SegmentReader reader,
+                              @Nonnull File destination)
             throws IOException {
-        checkArgument(store instanceof SegmentNodeStore);
         Stopwatch watch = Stopwatch.createStarted();
         SegmentGCOptions gcOptions = SegmentGCOptions.defaultGCOptions()
                 .setOffline();
@@ -64,14 +63,10 @@ public class FileStoreBackup {
         }
         builder.withGCOptions(gcOptions);
         FileStore backup = builder.build();
-        SegmentNodeState current = (SegmentNodeState) ((SegmentNodeStore) store)
-                .getSuperRoot();
+        SegmentNodeState current = reader.readHeadState();
         try {
             int gen = 0;
-            if (current instanceof SegmentNodeState) {
-                gen = ((SegmentNodeState) current).getRecordId().getSegment()
-                        .getGcGeneration();
-            }
+            gen = current.getRecordId().getSegment().getGcGeneration();
             SegmentBufferWriter bufferWriter = new SegmentBufferWriter(backup,
                     backup.getTracker(), backup.getReader(), "b", gen);
             SegmentWriter writer = new SegmentWriter(backup,

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackupRestore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackupRestore.java?rev=1747713&r1=1747712&r2=1747713&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackupRestore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackupRestore.java Fri Jun 10 14:09:35 2016
@@ -21,10 +21,9 @@ package org.apache.jackrabbit.oak.backup
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.lang.System.nanoTime;
+import static org.apache.jackrabbit.oak.management.ManagementOperation.Status.formatTime;
 import static org.apache.jackrabbit.oak.management.ManagementOperation.done;
 import static org.apache.jackrabbit.oak.management.ManagementOperation.newManagementOperation;
-import static org.apache.jackrabbit.oak.management.ManagementOperation.Status.formatTime;
-import static org.apache.jackrabbit.oak.backup.FileStoreRestore.restore;
 
 import java.io.File;
 import java.util.concurrent.Callable;
@@ -35,7 +34,9 @@ import javax.management.openmbean.Compos
 
 import org.apache.jackrabbit.oak.api.jmx.FileStoreBackupRestoreMBean;
 import org.apache.jackrabbit.oak.management.ManagementOperation;
-import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.apache.jackrabbit.oak.segment.Revisions;
+import org.apache.jackrabbit.oak.segment.SegmentNodeStore;
+import org.apache.jackrabbit.oak.segment.SegmentReader;
 
 /**
  * Default implementation of {@link FileStoreBackupRestoreMBean} based on a file.
@@ -45,7 +46,9 @@ public class FileStoreBackupRestore impl
     public static final String BACKUP_OP_NAME = "Backup";
     public static final String RESTORE_OP_NAME = "Restore";
 
-    private final NodeStore store;
+    private final SegmentNodeStore store;
+    private final Revisions revisions;
+    private final SegmentReader reader;
     private final File file;
     private final Executor executor;
 
@@ -58,10 +61,14 @@ public class FileStoreBackupRestore impl
      * @param executor  executor for running the back up or restore operation
      */
     public FileStoreBackupRestore(
-            @Nonnull NodeStore store,
+            @Nonnull SegmentNodeStore store,
+            @Nonnull Revisions revisions,
+            @Nonnull SegmentReader reader,
             @Nonnull File file,
             @Nonnull Executor executor) {
         this.store = checkNotNull(store);
+        this.revisions = checkNotNull(revisions);
+        this.reader = checkNotNull(reader);
         this.file = checkNotNull(file);
         this.executor = checkNotNull(executor);
     }
@@ -73,7 +80,7 @@ public class FileStoreBackupRestore impl
                 @Override
                 public String call() throws Exception {
                     long t0 = nanoTime();
-                    FileStoreBackup.backup(store, file);
+                    FileStoreBackup.backup(reader, file);
                     return "Backup completed in " + formatTime(nanoTime() - t0);
                 }
             });
@@ -94,7 +101,7 @@ public class FileStoreBackupRestore impl
                 @Override
                 public String call() throws Exception {
                     long t0 = nanoTime();
-                    FileStoreRestore.restore(file, store);
+                    FileStoreRestore.restore(file);
                     return "Restore completed in " + formatTime(nanoTime() - t0);
                 }
             });

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java?rev=1747713&r1=1747712&r2=1747713&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java Fri Jun 10 14:09:35 2016
@@ -25,6 +25,8 @@ import static org.apache.jackrabbit.oak.
 import java.io.File;
 import java.io.IOException;
 
+import com.google.common.base.Stopwatch;
+import com.google.common.base.Suppliers;
 import org.apache.jackrabbit.oak.segment.Compactor;
 import org.apache.jackrabbit.oak.segment.SegmentBufferWriter;
 import org.apache.jackrabbit.oak.segment.SegmentNodeState;
@@ -32,13 +34,9 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.WriterCacheManager;
 import org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions;
 import org.apache.jackrabbit.oak.segment.file.FileStore;
-import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Stopwatch;
-import com.google.common.base.Suppliers;
-
 public class FileStoreRestore {
 
     private static final Logger log = LoggerFactory
@@ -84,7 +82,7 @@ public class FileStoreRestore {
         log.info("Restore finished in {}.", watch);
     }
 
-    public static void restore(File source, NodeStore store) {
+    public static void restore(File source) {
         log.warn("Restore not available as an online operation.");
     }
 

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java?rev=1747713&r1=1747712&r2=1747713&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java Fri Jun 10 14:09:35 2016
@@ -257,18 +257,6 @@ public class SegmentNodeStore implements
         return head.get().getChildNode(ROOT);
     }
 
-    @Nonnull
-    public NodeState getSuperRoot() {
-        if (commitSemaphore.tryAcquire()) {
-            try {
-                refreshHead();
-            } finally {
-                commitSemaphore.release();
-            }
-        }
-        return head.get();
-    }
-
     @Override
     public NodeState merge(
             @Nonnull NodeBuilder builder, @Nonnull CommitHook commitHook,

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java?rev=1747713&r1=1747712&r2=1747713&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java Fri Jun 10 14:09:35 2016
@@ -67,17 +67,17 @@ public class FileStoreBackupTest {
         try {
             init(store);
             source.flush();
-            FileStoreBackup.backup(store, destination);
+            FileStoreBackup.backup(source.getReader(), destination);
             compare(source, destination);
 
             addTestContent(store);
             source.flush();
-            FileStoreBackup.backup(store, destination);
+            FileStoreBackup.backup(source.getReader(), destination);
             compare(source, destination);
 
             source.compact();
             FileStoreBackup.cleanup(source);
-            FileStoreBackup.backup(store, destination);
+            FileStoreBackup.backup(source.getReader(), destination);
             compare(source, destination);
         } finally {
             source.close();
@@ -91,7 +91,7 @@ public class FileStoreBackupTest {
                 .build();
         init(store);
         source.flush();
-        FileStoreBackup.backup(store, destination);
+        FileStoreBackup.backup(source.getReader(), destination);
         source.close();
 
         FileStoreRestore.restore(destination, src);