Author: alexparvulescu Date: Tue Jul 8 07:35:05 2014 New Revision: 1608683
URL: http://svn.apache.org/r1608683 Log: OAK-1921 Merged revision 1607737 Modified: jackrabbit/oak/branches/1.0/ (props changed) jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackupTest.java Propchange: jackrabbit/oak/branches/1.0/ ------------------------------------------------------------------------------ Merged /jackrabbit/oak/trunk:r1607737 Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java?rev=1608683&r1=1608682&r2=1608683&view=diff ============================================================================== --- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java (original) +++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java Tue Jul 8 07:35:05 2014 @@ -18,14 +18,16 @@ */ package org.apache.jackrabbit.oak.plugins.backup; +import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE; + import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; +import org.apache.jackrabbit.oak.plugins.segment.Compactor; import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeBuilder; import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState; import org.apache.jackrabbit.oak.plugins.segment.file.FileStore; -import org.apache.jackrabbit.oak.spi.state.ApplyDiff; import org.apache.jackrabbit.oak.spi.state.NodeState; import org.apache.jackrabbit.oak.spi.state.NodeStore; import org.slf4j.Logger; @@ -56,27 +58,29 @@ public class FileStoreBackup { FileStore backup = new FileStore(destination, MAX_FILE_SIZE, false); try { SegmentNodeState state = backup.getHead(); - SegmentNodeBuilder builder = state.builder(); - + NodeState before = null; String beforeCheckpoint = state.getString("checkpoint"); if (beforeCheckpoint == null) { // 3.1 no stored checkpoint, so do the initial full backup - builder.setChildNode("root", current); + before = EMPTY_NODE; } else { // 3.2 try to retrieve the previously backed up checkpoint - NodeState before = store.retrieve(beforeCheckpoint); + before = store.retrieve(beforeCheckpoint); if (before == null) { // the previous checkpoint is no longer available, // so use the backed up state as the basis of the // incremental backup diff before = state.getChildNode("root"); } - current.compareAgainstBaseState( - before, new ApplyDiff(builder.child("root"))); } - builder.setProperty("checkpoint", checkpoint); + + Compactor compactor = new Compactor(backup.getTracker().getWriter()); + SegmentNodeState after = compactor.compact(before, current); // 4. commit the backup + SegmentNodeBuilder builder = state.builder(); + builder.setProperty("checkpoint", checkpoint); + builder.setChildNode("root", after); backup.setHead(state, builder.getNodeState()); } finally { backup.close(); Modified: jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackupTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackupTest.java?rev=1608683&r1=1608682&r2=1608683&view=diff ============================================================================== --- jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackupTest.java (original) +++ jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackupTest.java Tue Jul 8 07:35:05 2014 @@ -64,7 +64,7 @@ public class FileStoreBackupTest { @Test public void testBackup() throws Exception { - FileStore source = new FileStore(src, 256, false); + FileStore source = new FileStore(src, 8, false); NodeStore store = new SegmentNodeStore(source); init(store); @@ -83,7 +83,7 @@ public class FileStoreBackupTest { @Test public void testRestore() throws Exception { - FileStore source = new FileStore(src, 256, false); + FileStore source = new FileStore(src, 8, false); NodeStore store = new SegmentNodeStore(source); init(store); @@ -110,7 +110,7 @@ public class FileStoreBackupTest { private static void compare(NodeStore store, File destination) throws IOException { - FileStore backup = new FileStore(destination, 256, false); + FileStore backup = new FileStore(destination, 8, false); assertEquals(store.getRoot(), new SegmentNodeStore(backup).getRoot()); backup.close(); } @@ -147,7 +147,7 @@ public class FileStoreBackupTest { } for (File f : destination.listFiles()) { - if(!f.getName().endsWith(".tar")){ + if (!f.getName().endsWith(".tar")) { continue; } assertTrue(f.getName() + " is missing from the backup",
