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