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 2015/10/12 09:37:07 UTC

svn commit: r1708044 - /jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java

Author: mduerig
Date: Mon Oct 12 07:37:07 2015
New Revision: 1708044

URL: http://svn.apache.org/viewvc?rev=1708044&view=rev
Log:
OAK-2507: Truncate journal.log after off line compaction
Truncate journal log to last and only revision after off-line compaction

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java?rev=1708044&r1=1708043&r2=1708044&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java Mon Oct 12 07:37:07 2015
@@ -29,6 +29,7 @@ import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.RandomAccessFile;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -104,6 +105,7 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy;
 import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy.CleanupType;
 import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.JournalReader;
 import org.apache.jackrabbit.oak.plugins.segment.standby.client.StandbyClient;
 import org.apache.jackrabbit.oak.plugins.segment.standby.server.StandbyServer;
 import org.apache.jackrabbit.oak.plugins.tika.TextExtractorMain;
@@ -517,6 +519,25 @@ public final class Main {
             store = openFileStore(directory);
             try {
                 store.cleanup();
+
+                String head;
+                File journal = new File(directory, "journal.log");
+                JournalReader journalReader = new JournalReader(journal);
+                try {
+                    head = journalReader.iterator().next() + " root\n";
+                } finally {
+                    journalReader.close();
+                }
+
+                RandomAccessFile journalFile = new RandomAccessFile(journal, "rw");
+                try {
+                    System.out.println("    -> writing new " + journal.getName() + ": " + head);
+                    journalFile.setLength(0);
+                    journalFile.writeBytes(head);
+                    journalFile.getChannel().force(false);
+                } finally {
+                    journalFile.close();
+                }
             } finally {
                 store.close();
             }