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 ju...@apache.org on 2014/01/20 22:44:01 UTC

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

Author: jukka
Date: Mon Jan 20 21:44:00 2014
New Revision: 1559835

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

Make it more obvious that the FileStore.writeSegment() operation is fully synchronized.

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=1559835&r1=1559834&r2=1559835&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 Mon Jan 20 21:44:00 2014
@@ -306,29 +306,25 @@ public class FileStore extends AbstractS
     @Override
     public synchronized void writeSegment(
             UUID segmentId, byte[] data, int offset, int length) {
-        try {
-            writeEntry(segmentId, data, offset, length);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private void writeEntry(
-            UUID segmentId, byte[] buffer, int offset, int length)
-            throws IOException {
+        // select whether to write a data or a bulk segment
         LinkedList<TarFile> files = dataFiles;
         String base = "data";
         if (isBulkSegmentId(segmentId)) {
             files = bulkFiles;
             base = "bulk";
         }
-        if (files.isEmpty() || !files.getLast().writeEntry(
-                segmentId, buffer, offset, length)) {
-            String name = String.format(FILE_NAME_FORMAT, base, files.size());
-            File file = new File(directory, name);
-            TarFile last = new TarFile(file, maxFileSize, memoryMapping);
-            checkState(last.writeEntry(segmentId, buffer, offset, length));
-            files.add(last);
+
+        try {
+            if (files.isEmpty() || !files.getLast().writeEntry(
+                    segmentId, data, offset, length)) {
+                String name = String.format(FILE_NAME_FORMAT, base, files.size());
+                File file = new File(directory, name);
+                TarFile last = new TarFile(file, maxFileSize, memoryMapping);
+                checkState(last.writeEntry(segmentId, data, offset, length));
+                files.add(last);
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
         }
     }