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
+}