Author: mduerig
Date: Mon Nov  6 17:06:24 2017
New Revision: 1814430

URL: http://svn.apache.org/viewvc?rev=1814430&view=rev
Log:
OAK-6909: FileStore.compact does not persist compacted head to journal
Add call to flush after successful compaction. Add test ensuring compaction 
persisted the compacted head state

Modified:
    
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/CompactionAndCleanupIT.java

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=1814430&r1=1814429&r2=1814430&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 Nov  6 17:06:24 2017
@@ -826,6 +826,7 @@ public class FileStore extends AbstractF
 
                 if (success) {
                     writer.flush();
+                    flush();
                     gcListener.info("TarMK GC #{}: compaction succeeded in {} 
({} ms), after {} cycles",
                             GC_COUNT, watch, watch.elapsed(MILLISECONDS), 
cycles);
                     return compactionSucceeded(newGeneration, 
after.getRecordId());

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java?rev=1814430&r1=1814429&r2=1814430&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java
 Mon Nov  6 17:06:24 2017
@@ -110,6 +110,34 @@ public class CompactionAndCleanupIT {
     }
 
     @Test
+    public void compactPersistsHead() throws Exception {
+        FileStore fileStore = fileStoreBuilder(getFileStoreFolder())
+                .withGCOptions(defaultGCOptions().setRetainedGenerations(2))
+                .withMaxFileSize(1)
+                .build();
+        SegmentNodeStore nodeStore = 
SegmentNodeStoreBuilders.builder(fileStore).build();
+
+        try {
+            // Create ~2MB of data
+            NodeBuilder extra = nodeStore.getRoot().builder();
+            NodeBuilder content = extra.child("content");
+            for (int i = 0; i < 10000; i++) {
+                NodeBuilder c = content.child("c" + i);
+                for (int j = 0; j < 1000; j++) {
+                    c.setProperty("p" + i, "v" + i);
+                }
+            }
+            nodeStore.merge(extra, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+            fileStore.flush();
+
+            fileStore.compactFull();
+            assertEquals(fileStore.getRevisions().getHead(), 
fileStore.getRevisions().getPersistedHead());
+        } finally {
+            fileStore.close();
+        }
+    }
+
+    @Test
     public void compactionNoBinaryClone() throws Exception {
         ScheduledExecutorService executor = newSingleThreadScheduledExecutor();
         FileStore fileStore = fileStoreBuilder(getFileStoreFolder())


Reply via email to