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 2013/11/26 16:55:03 UTC

svn commit: r1545698 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/segment/ListRecord.java test/java/org/apache/jackrabbit/oak/plugins/segment/RecordTest.java

Author: jukka
Date: Tue Nov 26 15:55:03 2013
New Revision: 1545698

URL: http://svn.apache.org/r1545698
Log:
OAK-1184: Uploading large number of files to single folder fails.

A list bucket can't contain more entries than there can be references to other segments

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/ListRecord.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/ListRecord.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/ListRecord.java?rev=1545698&r1=1545697&r2=1545698&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/ListRecord.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/ListRecord.java Tue Nov 26 15:55:03 2013
@@ -21,7 +21,7 @@ import static com.google.common.base.Pre
 
 class ListRecord extends Record {
 
-    static final int LEVEL_SIZE = 1 << 8; // 256
+    static final int LEVEL_SIZE = Segment.SEGMENT_REFERENCE_LIMIT;
 
     private final int size;
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordTest.java?rev=1545698&r1=1545697&r2=1545698&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordTest.java Tue Nov 26 15:55:03 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.plugins.segment;
 
+import static com.google.common.collect.Lists.newArrayList;
 import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
 import static org.apache.jackrabbit.oak.plugins.segment.ListRecord.LEVEL_SIZE;
 import static org.junit.Assert.assertEquals;
@@ -32,6 +33,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
+import java.util.UUID;
 
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.plugins.segment.memory.MemoryStore;
@@ -109,6 +111,15 @@ public class RecordTest {
     }
 
     @Test
+    public void testListWithLotsOfReferences() { // OAK-1184
+        List<RecordId> list = newArrayList();
+        for (int i = 0; i < 1000; i++) {
+            list.add(new RecordId(UUID.randomUUID(), 0));
+        }
+        writer.writeList(list);
+    }
+
+    @Test
     public void testStreamRecord() throws IOException {
         checkRandomStreamRecord(0);
         checkRandomStreamRecord(1);