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