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 ch...@apache.org on 2017/12/15 10:11:49 UTC

svn commit: r1818256 - /jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.java

Author: chetanm
Date: Fri Dec 15 10:11:49 2017
New Revision: 1818256

URL: http://svn.apache.org/viewvc?rev=1818256&view=rev
Log:
OAK-6353 - Use Document order traversal for reindexing performed on DocumentNodeStore setups

Track and report the max buffer size

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.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=1818256&r1=1818255&r2=1818256&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 Fri Dec 15 10:11:49 2017
@@ -26,22 +26,25 @@ import java.util.ListIterator;
 import com.google.common.collect.AbstractIterator;
 import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntry;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import static com.google.common.collect.Iterators.concat;
 import static com.google.common.collect.Iterators.singletonIterator;
 
 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 NodeStateEntry current;
     private final int checkChildLimit;
+    private int maxBufferSize;
 
     public FlatFileStoreIterator(Iterator<NodeStateEntry> baseItr, int checkChildLimit) {
         this.baseItr = baseItr;
         this.checkChildLimit = checkChildLimit;
     }
 
-    //TODO Track max buffer size
     int getBufferSize(){
         return buffer.size();
     }
@@ -50,10 +53,16 @@ class FlatFileStoreIterator extends Abst
     protected NodeStateEntry computeNext() {
         //TODO Add some checks on expected ordering
         current = computeNextEntry();
-        return current == null ? endOfData() : current;
+        if (current == null) {
+            log.info("Max buffer size in complete traversal is [{}]", maxBufferSize);
+            return endOfData();
+        } else {
+            return current;
+        }
     }
 
     private NodeStateEntry computeNextEntry() {
+        maxBufferSize = Math.max(maxBufferSize, buffer.size());
         if (!buffer.isEmpty()) {
             return buffer.remove();
         }
@@ -81,7 +90,7 @@ class FlatFileStoreIterator extends Abst
                 //If queue is empty try to append by getting entry from base
                 if (!qitr.hasNext() && baseItr.hasNext()) {
                     qitr.add(wrap(baseItr.next()));
-                    qitr.previous(); //Move back the itr again
+                    qitr.previous(); //Move back the itr
                 }
                 if (qitr.hasNext()) {
                     return qitr.next();