Author: jukka
Date: Thu Mar 20 04:58:36 2014
New Revision: 1579538

URL: http://svn.apache.org/r1579538
Log:
OAK-631: SegmentMK: Implement garbage collection

Update tar file name format to allow GC to modify the files without overwriting

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1579538&r1=1579537&r2=1579538&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
 Thu Mar 20 04:58:36 2014
@@ -53,7 +53,7 @@ public class FileStore implements Segmen
 
     private static final int MB = 1024 * 1024;
 
-    private static final String FILE_NAME_FORMAT = "%s%05d.tar";
+    private static final String FILE_NAME_FORMAT = "%s%05d%s.tar";
 
     private static final String JOURNAL_FILE_NAME = "journal.log";
 
@@ -135,8 +135,12 @@ public class FileStore implements Segmen
         this.memoryMapping = memoryMapping;
 
         for (int i = 0; true; i++) {
-            String name = String.format(FILE_NAME_FORMAT, "bulk", i);
+            String name = String.format(FILE_NAME_FORMAT, "bulk", i, "a");
             File file = new File(directory, name);
+            if (!file.isFile()) {
+                name = String.format(FILE_NAME_FORMAT, "bulk", i, "");
+                file = new File(directory, name);
+            }
             if (file.isFile()) {
                 bulkFiles.add(new TarFile(file, maxFileSize, memoryMapping));
             } else {
@@ -145,8 +149,12 @@ public class FileStore implements Segmen
         }
 
         for (int i = 0; true; i++) {
-            String name = String.format(FILE_NAME_FORMAT, "data", i);
+            String name = String.format(FILE_NAME_FORMAT, "data", i, "a");
             File file = new File(directory, name);
+            if (!file.isFile()) {
+                name = String.format(FILE_NAME_FORMAT, "data", i, "");
+                file = new File(directory, name);
+            }
             if (file.isFile()) {
                 dataFiles.add(new TarFile(file, maxFileSize, memoryMapping));
             } else {
@@ -378,7 +386,8 @@ public class FileStore implements Segmen
                     id.getLeastSignificantBits());
             if (files.isEmpty() || !files.get(files.size() - 1).writeEntry(
                     uuid, data, offset, length)) {
-                String name = String.format(FILE_NAME_FORMAT, base, 
files.size());
+                String name = String.format(
+                        FILE_NAME_FORMAT, base, files.size(), "a");
                 File file = new File(directory, name);
                 TarFile last = new TarFile(file, maxFileSize, memoryMapping);
                 checkState(last.writeEntry(uuid, data, offset, length));


Reply via email to