Author: catholicon
Date: Tue Feb 27 13:39:45 2018
New Revision: 1825448

URL: http://svn.apache.org/viewvc?rev=1825448&view=rev
Log:
OAK-7284: Reindexing using --doc-traversal-mode can hit 
ConcurrentModificationException during aggregation

Fixed by using commons collections CursorableLinkedList instead of LinkedList

Modified:
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.java
    
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIteratorTest.java

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.java?rev=1825448&r1=1825447&r2=1825448&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.java
 Tue Feb 27 13:39:45 2018
@@ -20,10 +20,10 @@
 package org.apache.jackrabbit.oak.index.indexer.document.flatfile;
 
 import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.ListIterator;
 
 import com.google.common.collect.AbstractIterator;
+import org.apache.commons.collections.list.CursorableLinkedList;
 import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntry;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.slf4j.Logger;
@@ -35,7 +35,7 @@ import static com.google.common.collect.
 class FlatFileStoreIterator extends AbstractIterator<NodeStateEntry> 
implements Iterator<NodeStateEntry> {
     private final Logger log = LoggerFactory.getLogger(getClass());
     private final Iterator<NodeStateEntry> baseItr;
-    private final LinkedList<NodeStateEntry> buffer = new LinkedList<>();
+    private final CursorableLinkedList buffer = new CursorableLinkedList();
     private NodeStateEntry current;
     private final int checkChildLimit;
     private int maxBufferSize;
@@ -67,7 +67,7 @@ class FlatFileStoreIterator extends Abst
             log.info("Max buffer size changed {} for path {}", maxBufferSize, 
current.getPath());
         }
         if (!buffer.isEmpty()) {
-            return buffer.remove();
+            return (NodeStateEntry)buffer.removeFirst();
         }
         if (baseItr.hasNext()) {
             return wrap(baseItr.next());

Modified: 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIteratorTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIteratorTest.java?rev=1825448&r1=1825447&r2=1825448&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIteratorTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIteratorTest.java
 Tue Feb 27 13:39:45 2018
@@ -25,7 +25,6 @@ import com.google.common.collect.Immutab
 import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntry;
 import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import static java.util.Arrays.asList;
@@ -100,7 +99,7 @@ public class FlatFileStoreIteratorTest {
         }
     }
 
-    @Ignore("OAK-7284")
+    // OAK-7284
     @Test
     public void comodificationException() {
         Set<String> preferred = ImmutableSet.of("j:c");


Reply via email to