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));