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 th...@apache.org on 2020/08/12 14:23:11 UTC
svn commit: r1880808 - in /jackrabbit/oak/trunk/oak-run/src:
main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/
test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/
Author: thomasm
Date: Wed Aug 12 14:23:11 2020
New Revision: 1880808
URL: http://svn.apache.org/viewvc?rev=1880808&view=rev
Log:
OAK-9173 Oak-run indexing fails with 'This map is closed'
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStore.java
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/FlatFileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStore.java?rev=1880808&r1=1880807&r2=1880808&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStore.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStore.java Wed Aug 12 14:23:11 2020
@@ -61,7 +61,9 @@ public class FlatFileStore implements It
@Override
public Iterator<NodeStateEntry> iterator() {
String fileName = new File(storeFile.getParent(), "linkedList").getAbsolutePath();
- return new FlatFileStoreIterator(blobStore, fileName, createBaseIterator(), preferredPathElements);
+ FlatFileStoreIterator it = new FlatFileStoreIterator(blobStore, fileName, createBaseIterator(), preferredPathElements);
+ closer.register(it::close);
+ return it;
}
private Iterator<NodeStateEntry> createBaseIterator() {
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=1880808&r1=1880807&r2=1880808&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 Wed Aug 12 14:23:11 2020
@@ -22,6 +22,7 @@ package org.apache.jackrabbit.oak.index.
import static com.google.common.collect.Iterators.concat;
import static com.google.common.collect.Iterators.singletonIterator;
+import java.io.Closeable;
import java.util.Iterator;
import java.util.Set;
@@ -36,7 +37,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.collect.AbstractIterator;
-class FlatFileStoreIterator extends AbstractIterator<NodeStateEntry> implements Iterator<NodeStateEntry> {
+class FlatFileStoreIterator extends AbstractIterator<NodeStateEntry> implements Iterator<NodeStateEntry>, Closeable {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Iterator<NodeStateEntry> baseItr;
private final NodeStateEntryList buffer;
@@ -85,7 +86,6 @@ class FlatFileStoreIterator extends Abst
current = computeNextEntry();
if (current == null) {
log.info("Max buffer size in complete traversal is [{}]", maxBufferSize);
- buffer.close();
return endOfData();
} else {
return current;
@@ -130,7 +130,6 @@ class FlatFileStoreIterator extends Abst
if (qitr.hasNext()) {
return wrapIfNeeded(qitr.next());
}
- buffer.close();
return endOfData();
}
};
@@ -148,4 +147,9 @@ class FlatFileStoreIterator extends Abst
// (actually wrapping would work just fine - it's just not needed)
return e;
}
+
+ @Override
+ public void close() {
+ buffer.close();
+ }
}
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=1880808&r1=1880807&r2=1880808&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 Wed Aug 12 14:23:11 2020
@@ -60,7 +60,7 @@ public class FlatFileStoreIteratorTest {
public void simpleTraversal() {
Set<String> preferred = ImmutableSet.of("jcr:content");
CountingIterable<NodeStateEntry> citr = createList(preferred, asList("/a", "/a/jcr:content", "/a/jcr:content/metadata",
- "/a/d", "/e"));
+ "/a/d", "/e", "/e/e"));
FlatFileStoreIterator fitr = newFlatFileStore(citr.iterator(), preferred);
NodeStateEntry a = fitr.next();
@@ -86,7 +86,11 @@ public class FlatFileStoreIteratorTest {
NodeStateEntry nse4 = fitr.next();
assertEquals("/e", nse4.getPath());
- assertEquals(0, nse4.getNodeState().getChildNodeCount(100));
+ assertEquals(1, nse4.getNodeState().getChildNodeCount(100));
+
+ NodeStateEntry nse5 = fitr.next();
+ assertEquals("/e/e", nse5.getPath());
+ assertEquals(0, nse5.getNodeState().getChildNodeCount(100));
assertFalse(fitr.hasNext());
}
@@ -239,4 +243,4 @@ public class FlatFileStoreIteratorTest {
// ignore
}
}
-}
\ No newline at end of file
+}