Author: chetanm
Date: Wed Sep 20 11:54:51 2017
New Revision: 1809008

URL: http://svn.apache.org/viewvc?rev=1809008&view=rev
Log:
OAK-6683 - Use less resource intensive method to determine number of docs in 
lucene index

Modified:
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexInfoProvider.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/DirectoryUtils.java

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexInfoProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexInfoProvider.java?rev=1809008&r1=1809007&r2=1809008&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexInfoProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexInfoProvider.java
 Wed Sep 20 11:54:51 2017
@@ -119,9 +119,8 @@ public class LuceneIndexInfoProvider imp
         IndexDefinition defn = IndexDefinition.newBuilder(nodeStore.getRoot(), 
idxState, info.indexPath).build();
         for (String dirName : idxState.getChildNodeNames()) {
             if (NodeStateUtils.isHidden(dirName) && 
MultiplexersLucene.isIndexDirName(dirName)) {
-                Directory dir = new OakDirectory(new 
ReadOnlyBuilder(idxState), dirName, defn, true);
-                try (DirectoryReader dirReader = DirectoryReader.open(dir)) {
-                    info.numEntries += dirReader.numDocs();
+                try (Directory dir = new OakDirectory(new 
ReadOnlyBuilder(idxState), dirName, defn, true)) {
+                    info.numEntries += DirectoryUtils.getNumDocs(dir);
                     info.size = DirectoryUtils.dirSize(dir);
                 }
             }

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/DirectoryUtils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/DirectoryUtils.java?rev=1809008&r1=1809007&r2=1809008&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/DirectoryUtils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/DirectoryUtils.java
 Wed Sep 20 11:54:51 2017
@@ -24,6 +24,8 @@ import java.io.IOException;
 import java.util.List;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.lucene.index.SegmentCommitInfo;
+import org.apache.lucene.index.SegmentInfos;
 import org.apache.lucene.store.Directory;
 
 import static 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.IndexRootDirectory.INDEX_METADATA_FILE_NAME;
@@ -83,6 +85,18 @@ public class DirectoryUtils {
         return indexDir;
     }
 
+    public static int getNumDocs(Directory dir) throws IOException {
+        int count = 0;
+        SegmentInfos sis = new SegmentInfos();
+        sis.read(dir);
+
+        for (SegmentCommitInfo sci : sis) {
+            count += sci.info.getDocCount() - sci.getDelCount();
+        }
+
+        return count;
+    }
+
     static File createSubDir(File indexDir, String name) throws IOException {
         String fsSafeName = name.replace(":", "");
         File dir = new File(indexDir, fsSafeName);


Reply via email to