Author: chetanm
Date: Wed Sep 27 05:19:44 2017
New Revision: 1809803

URL: http://svn.apache.org/viewvc?rev=1809803&view=rev
Log:
OAK-6718 - Configure RAM buffer size used by IndexWriter with oak-run indexing

Introduce a new LuceneIndexWriterConfig which provides a way to pass in custom 
config option to Lucene IndexWriter

Added:
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/LuceneIndexWriterConfig.java
   (with props)
Modified:
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriter.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriterFactory.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/IndexWriterUtils.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriter.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/MultiplexingLucenePropertyIndexTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactoryTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriterTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriterTest.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/LuceneIndexerProvider.java

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java
 Wed Sep 27 05:19:44 2017
@@ -34,6 +34,7 @@ import org.apache.jackrabbit.oak.plugins
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.LocalIndexWriterFactory;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.LuceneDocumentHolder;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.DefaultIndexWriterFactory;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterConfig;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterFactory;
 import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
 import org.apache.jackrabbit.oak.spi.commit.CommitContext;
@@ -68,6 +69,7 @@ public class LuceneIndexEditorProvider i
     private GarbageCollectableBlobStore blobStore;
     private IndexingQueue indexingQueue;
     private boolean nrtIndexingEnabled;
+    private LuceneIndexWriterConfig writerConfig = new 
LuceneIndexWriterConfig();
 
     /**
      * Number of indexed Lucene document that can be held in memory
@@ -179,7 +181,7 @@ public class LuceneIndexEditorProvider i
             }
 
             if (writerFactory == null) {
-                writerFactory = new 
DefaultIndexWriterFactory(mountInfoProvider, 
newDirectoryFactory(blobDeletionCallback));
+                writerFactory = new 
DefaultIndexWriterFactory(mountInfoProvider, 
newDirectoryFactory(blobDeletionCallback), writerConfig);
             }
 
             LuceneIndexEditorContext context = new 
LuceneIndexEditorContext(root, definition, indexDefinition, callback,
@@ -227,6 +229,10 @@ public class LuceneIndexEditorProvider i
         this.nrtIndexingEnabled = indexingQueue != null;
     }
 
+    public void setWriterConfig(LuceneIndexWriterConfig writerConfig) {
+        this.writerConfig = writerConfig;
+    }
+
     GarbageCollectableBlobStore getBlobStore() {
         return blobStore;
     }

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriter.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriter.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriter.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriter.java
 Wed Sep 27 05:19:44 2017
@@ -59,6 +59,7 @@ class DefaultIndexWriter implements Luce
     private final String dirName;
     private final String suggestDirName;
     private final boolean reindex;
+    private final LuceneIndexWriterConfig writerConfig;
     private IndexWriter writer;
     private Directory directory;
     private long genAtStart = -1;
@@ -66,13 +67,14 @@ class DefaultIndexWriter implements Luce
 
     public DefaultIndexWriter(IndexDefinition definition, NodeBuilder 
definitionBuilder,
                               DirectoryFactory directoryFactory, String 
dirName, String suggestDirName,
-                              boolean reindex) {
+                              boolean reindex, LuceneIndexWriterConfig 
writerConfig) {
         this.definition = definition;
         this.definitionBuilder = definitionBuilder;
         this.directoryFactory = directoryFactory;
         this.dirName = dirName;
         this.suggestDirName = suggestDirName;
         this.reindex = reindex;
+        this.writerConfig = writerConfig;
     }
 
     @Override
@@ -142,7 +144,7 @@ class DefaultIndexWriter implements Luce
         if (writer == null) {
             final long start = PERF_LOGGER.start();
             directory = directoryFactory.newInstance(definition, 
definitionBuilder, dirName, reindex);
-            IndexWriterConfig config = getIndexWriterConfig(definition, 
directoryFactory.remoteDirectory());
+            IndexWriterConfig config = getIndexWriterConfig(definition, 
directoryFactory.remoteDirectory(), writerConfig);
             config.setMergePolicy(definition.getMergePolicy());
             writer = new IndexWriter(directory, config);
             genAtStart = getLatestGeneration(directory);

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriterFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriterFactory.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriterFactory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriterFactory.java
 Wed Sep 27 05:19:44 2017
@@ -19,14 +19,10 @@
 
 package org.apache.jackrabbit.oak.plugins.index.lucene.writer;
 
-import javax.annotation.Nullable;
 
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
 import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants;
-import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.DefaultDirectoryFactory;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.DirectoryFactory;
-import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 
@@ -35,16 +31,13 @@ import static com.google.common.base.Pre
 public class DefaultIndexWriterFactory implements LuceneIndexWriterFactory {
     private final MountInfoProvider mountInfoProvider;
     private final DirectoryFactory directoryFactory;
+    private final LuceneIndexWriterConfig writerConfig;
 
     public DefaultIndexWriterFactory(MountInfoProvider mountInfoProvider,
-        @Nullable IndexCopier indexCopier, @Nullable 
GarbageCollectableBlobStore blobStore) {
-        this(mountInfoProvider, new DefaultDirectoryFactory(indexCopier, 
blobStore));
-    }
-
-    public DefaultIndexWriterFactory(MountInfoProvider mountInfoProvider,
-                                     DirectoryFactory directoryFactory) {
+                                     DirectoryFactory directoryFactory, 
LuceneIndexWriterConfig writerConfig) {
         this.mountInfoProvider = checkNotNull(mountInfoProvider);
         this.directoryFactory = checkNotNull(directoryFactory);
+        this.writerConfig = checkNotNull(writerConfig);
     }
 
     @Override
@@ -52,10 +45,10 @@ public class DefaultIndexWriterFactory i
                                          NodeBuilder definitionBuilder, 
boolean reindex) {
         if (mountInfoProvider.hasNonDefaultMounts()){
             return new MultiplexingIndexWriter(directoryFactory, 
mountInfoProvider, definition,
-                definitionBuilder, reindex);
+                definitionBuilder, reindex, writerConfig);
         }
         return new DefaultIndexWriter(definition, definitionBuilder, 
directoryFactory,
             LuceneIndexConstants.INDEX_DATA_CHILD_NAME,
-            LuceneIndexConstants.SUGGEST_DATA_CHILD_NAME, reindex);
+            LuceneIndexConstants.SUGGEST_DATA_CHILD_NAME, reindex, 
writerConfig);
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/IndexWriterUtils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/IndexWriterUtils.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/IndexWriterUtils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/IndexWriterUtils.java
 Wed Sep 27 05:19:44 2017
@@ -37,7 +37,12 @@ import static org.apache.jackrabbit.oak.
 
 public class IndexWriterUtils {
 
-    public static IndexWriterConfig getIndexWriterConfig(IndexDefinition 
definition, boolean remoteDir) {
+    public static IndexWriterConfig getIndexWriterConfig(IndexDefinition 
definition, boolean remoteDir){
+        return getIndexWriterConfig(definition, remoteDir, new 
LuceneIndexWriterConfig());
+    }
+
+    public static IndexWriterConfig getIndexWriterConfig(IndexDefinition 
definition, boolean remoteDir,
+                                                         
LuceneIndexWriterConfig writerConfig) {
         // FIXME: Hack needed to make Lucene work in an OSGi environment
         Thread thread = Thread.currentThread();
         ClassLoader loader = thread.getContextClassLoader();
@@ -51,13 +56,13 @@ public class IndexWriterUtils {
             }
             Analyzer analyzer = new 
PerFieldAnalyzerWrapper(definitionAnalyzer, analyzers);
             IndexWriterConfig config = new IndexWriterConfig(VERSION, 
analyzer);
-//            config.setMergePolicy(definition.getMergePolicy());
             if (remoteDir) {
                 config.setMergeScheduler(new SerialMergeScheduler());
             }
             if (definition.getCodec() != null) {
                 config.setCodec(definition.getCodec());
             }
+            config.setRAMBufferSizeMB(writerConfig.getRamBufferSizeMB());
             return config;
         } finally {
             thread.setContextClassLoader(loader);

Added: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/LuceneIndexWriterConfig.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/LuceneIndexWriterConfig.java?rev=1809803&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/LuceneIndexWriterConfig.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/LuceneIndexWriterConfig.java
 Wed Sep 27 05:19:44 2017
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.plugins.index.lucene.writer;
+
+import org.apache.lucene.index.IndexWriterConfig;
+
+public class LuceneIndexWriterConfig {
+    private final double ramBufferSizeMB;
+
+    public LuceneIndexWriterConfig() {
+        this(IndexWriterConfig.DEFAULT_RAM_BUFFER_SIZE_MB);
+    }
+
+    public LuceneIndexWriterConfig(double ramBufferSizeMB) {
+        this.ramBufferSizeMB = ramBufferSizeMB;
+    }
+
+    public double getRamBufferSizeMB() {
+        return ramBufferSizeMB;
+    }
+}

Propchange: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/LuceneIndexWriterConfig.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriter.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriter.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriter.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriter.java
 Wed Sep 27 05:19:44 2017
@@ -37,17 +37,19 @@ class MultiplexingIndexWriter implements
     private final IndexDefinition definition;
     private final NodeBuilder definitionBuilder;
     private final boolean reindex;
+    private final LuceneIndexWriterConfig writerConfig;
 
     private final Map<Mount, DefaultIndexWriter> writers = Maps.newHashMap();
 
     public MultiplexingIndexWriter(DirectoryFactory directoryFactory, 
MountInfoProvider mountInfoProvider,
                                    IndexDefinition definition, NodeBuilder 
definitionBuilder,
-                                   boolean reindex) {
+                                   boolean reindex, LuceneIndexWriterConfig 
writerConfig) {
         this.mountInfoProvider = mountInfoProvider;
         this.definition = definition;
         this.definitionBuilder = definitionBuilder;
         this.reindex = reindex;
         this.directoryFactory = directoryFactory;
+        this.writerConfig = writerConfig;
     }
 
     @Override
@@ -97,6 +99,6 @@ class MultiplexingIndexWriter implements
         String dirName = MultiplexersLucene.getIndexDirName(m);
         String suggestDirName = MultiplexersLucene.getSuggestDirName(m);
         return new DefaultIndexWriter(definition, definitionBuilder, 
directoryFactory, dirName,
-            suggestDirName, reindex);
+            suggestDirName, reindex, writerConfig);
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java
 Wed Sep 27 05:19:44 2017
@@ -39,9 +39,12 @@ import org.apache.jackrabbit.oak.commons
 import org.apache.jackrabbit.oak.plugins.index.lucene.Aggregate.NodeInclude;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.Aggregate.NodeIncludeResult;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.Aggregate.PropertyIncludeResult;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.DefaultDirectoryFactory;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.DirectoryFactory;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.DefaultIndexWriterFactory;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterConfig;
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
 import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -420,7 +423,9 @@ public class AggregateTest {
         LuceneDocumentMaker maker = new LuceneDocumentMaker(defn, 
defn.getApplicableIndexingRule("nt:folder"), "/bar");
         Document doc = maker.makeDocument(nb.getNodeState());
 
-        DefaultIndexWriterFactory writerFactory = new 
DefaultIndexWriterFactory(Mounts.defaultMountInfoProvider(), null, null);
+        DirectoryFactory directoryFactory = new DefaultDirectoryFactory(null, 
null);
+        DefaultIndexWriterFactory writerFactory = new 
DefaultIndexWriterFactory(Mounts.defaultMountInfoProvider(),
+                directoryFactory, new LuceneIndexWriterConfig());
         LuceneIndexWriter writer = writerFactory.newInstance(defn, 
EMPTY_NODE.builder(), false);
         writer.updateDocument("/bar", doc);
         writer.close(100);

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/MultiplexingLucenePropertyIndexTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/MultiplexingLucenePropertyIndexTest.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/MultiplexingLucenePropertyIndexTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/MultiplexingLucenePropertyIndexTest.java
 Wed Sep 27 05:19:44 2017
@@ -38,11 +38,14 @@ import org.apache.jackrabbit.oak.api.Con
 import org.apache.jackrabbit.oak.api.Result;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.PathUtils;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.DefaultDirectoryFactory;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.DirectoryFactory;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.reader.DefaultIndexReaderFactory;
 import org.apache.jackrabbit.oak.plugins.index.lucene.reader.LuceneIndexReader;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.reader.LuceneIndexReaderFactory;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.DefaultIndexWriterFactory;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterConfig;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterFactory;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.MultiplexersLucene;
 import org.apache.jackrabbit.oak.plugins.index.nodetype.NodeTypeIndexProvider;
@@ -129,7 +132,8 @@ public class MultiplexingLucenePropertyI
         IndexDefinition defn = new IndexDefinition(initialContent, 
defnBuilder.getNodeState(), "/foo");
 
         //1. Have 2 reader created by writes in 2 diff mounts
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, null);
+        DirectoryFactory directoryFactory = new DefaultDirectoryFactory(null, 
null);
+        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
directoryFactory, new LuceneIndexWriterConfig());
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
 
         writer.updateDocument("/content/en", newDoc("/content/en"));

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactoryTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactoryTest.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactoryTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactoryTest.java
 Wed Sep 27 05:19:44 2017
@@ -29,8 +29,11 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.index.lucene.FieldNames;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
 import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.DefaultDirectoryFactory;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.DirectoryFactory;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.DefaultIndexWriterFactory;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterConfig;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterFactory;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
@@ -57,6 +60,7 @@ public class DefaultIndexReaderFactoryTe
     private IndexDefinition defn = new IndexDefinition(root, 
builder.getNodeState(), "/foo");
     private MountInfoProvider mip = Mounts.newBuilder()
             .mount("foo", "/libs", "/apps").build();
+    private LuceneIndexWriterConfig writerConfig = new 
LuceneIndexWriterConfig();
 
     @Test
     public void emptyDir() throws Exception{
@@ -67,7 +71,7 @@ public class DefaultIndexReaderFactoryTe
 
     @Test
     public void indexDir() throws Exception{
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, null);
+        LuceneIndexWriterFactory factory = newDirectoryFactory();
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
 
         writer.updateDocument("/content/en", newDoc("/content/en"));
@@ -104,7 +108,8 @@ public class DefaultIndexReaderFactoryTe
             .createCachingFDS(folder.newFolder().getAbsolutePath(),
                 folder.newFolder().getAbsolutePath());
 
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, new DataStoreBlobStore(ds));
+        DirectoryFactory directoryFactory = new DefaultDirectoryFactory(null, 
new DataStoreBlobStore(ds));
+        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
directoryFactory, writerConfig);
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
 
         writer.updateDocument("/content/en", newDoc("/content/en"));
@@ -136,7 +141,7 @@ public class DefaultIndexReaderFactoryTe
 
     @Test
     public void suggesterDir() throws Exception{
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, null);
+        LuceneIndexWriterFactory factory = newDirectoryFactory();
         enabledSuggestorForSomeProp();
         defn = new IndexDefinition(root, builder.getNodeState(), "/foo");
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
@@ -156,7 +161,7 @@ public class DefaultIndexReaderFactoryTe
 
     @Test
     public void multipleReaders() throws Exception{
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, null);
+        LuceneIndexWriterFactory factory = newDirectoryFactory();
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
 
         writer.updateDocument("/content/en", newDoc("/content/en"));
@@ -170,7 +175,7 @@ public class DefaultIndexReaderFactoryTe
 
     @Test
     public void multipleReaders_SingleSuggester() throws Exception{
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, null);
+        LuceneIndexWriterFactory factory = newDirectoryFactory();
         enabledSuggestorForSomeProp();
         defn = new IndexDefinition(root, builder.getNodeState(), "/foo");
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
@@ -199,4 +204,9 @@ public class DefaultIndexReaderFactoryTe
         prop.setProperty("name", "foo");
         prop.setProperty(LuceneIndexConstants.PROP_USE_IN_SUGGEST, true);
     }
+
+    private LuceneIndexWriterFactory newDirectoryFactory(){
+        DirectoryFactory directoryFactory = new DefaultDirectoryFactory(null, 
null);
+        return new DefaultIndexWriterFactory(mip, directoryFactory, 
writerConfig);
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriterTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriterTest.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriterTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriterTest.java
 Wed Sep 27 05:19:44 2017
@@ -40,6 +40,7 @@ import static org.apache.jackrabbit.oak.
 import static 
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
 import static org.apache.jackrabbit.oak.InitialContent.INITIAL_CONTENT;
 import static org.hamcrest.Matchers.instanceOf;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
@@ -53,27 +54,26 @@ public class DefaultIndexWriterTest {
 
     private NodeBuilder builder = EMPTY_NODE.builder();
 
+    private LuceneIndexWriterConfig writerConfig = new 
LuceneIndexWriterConfig();
+
     @Test
     public void lazyInit() throws Exception {
         IndexDefinition defn = new IndexDefinition(root, 
builder.getNodeState(), "/foo");
-        DefaultIndexWriter writer = new DefaultIndexWriter(defn, builder, null,
-                INDEX_DATA_CHILD_NAME, SUGGEST_DATA_CHILD_NAME, false);
+        DefaultIndexWriter writer = createWriter(defn, false);
         assertFalse(writer.close(0));
     }
 
     @Test
     public void writeInitializedUponReindex() throws Exception {
         IndexDefinition defn = new IndexDefinition(root, 
builder.getNodeState(), "/foo");
-        DefaultIndexWriter writer = new DefaultIndexWriter(defn, builder,
-                new DefaultDirectoryFactory(null, null), 
INDEX_DATA_CHILD_NAME, SUGGEST_DATA_CHILD_NAME, true);
+        DefaultIndexWriter writer = createWriter(defn, true);
         assertTrue(writer.close(0));
     }
 
     @Test
     public void indexUpdated() throws Exception {
         IndexDefinition defn = new IndexDefinition(root, 
builder.getNodeState(), "/foo");
-        DefaultIndexWriter writer = new DefaultIndexWriter(defn, builder,
-                new DefaultDirectoryFactory(null, null), 
INDEX_DATA_CHILD_NAME, SUGGEST_DATA_CHILD_NAME, false);
+        DefaultIndexWriter writer = createWriter(defn, false);
 
         Document document = new Document();
         document.add(newPathField("/a/b"));
@@ -86,8 +86,7 @@ public class DefaultIndexWriterTest {
     @Test
     public void indexWriterConfig_Scheduler_Remote() throws Exception{
         IndexDefinition defn = new IndexDefinition(root, 
builder.getNodeState(), "/foo");
-        DefaultIndexWriter writer = new DefaultIndexWriter(defn, builder,
-                new DefaultDirectoryFactory(null, null), 
INDEX_DATA_CHILD_NAME, SUGGEST_DATA_CHILD_NAME, true);
+        DefaultIndexWriter writer = createWriter(defn, true);
 
         IndexWriter w = writer.getWriter();
         assertThat(w.getConfig().getMergeScheduler(), 
instanceOf(SerialMergeScheduler.class));
@@ -98,9 +97,28 @@ public class DefaultIndexWriterTest {
         FSDirectoryFactory fsdir = new FSDirectoryFactory(folder.getRoot());
         IndexDefinition defn = new IndexDefinition(root, 
builder.getNodeState(), "/foo");
         DefaultIndexWriter writer = new DefaultIndexWriter(defn, builder,
-                fsdir, INDEX_DATA_CHILD_NAME, SUGGEST_DATA_CHILD_NAME, true);
+                fsdir, INDEX_DATA_CHILD_NAME, SUGGEST_DATA_CHILD_NAME, true, 
writerConfig);
 
         IndexWriter w = writer.getWriter();
         assertThat(w.getConfig().getMergeScheduler(), 
instanceOf(ConcurrentMergeScheduler.class));
     }
+
+    @Test
+    public void configRAMSize() throws Exception{
+        writerConfig = new LuceneIndexWriterConfig(42);
+
+        IndexDefinition defn = new IndexDefinition(root, 
builder.getNodeState(), "/foo");
+        DefaultIndexWriter writer = createWriter(defn, true);
+
+        IndexWriter w = writer.getWriter();
+        assertEquals(w.getConfig().getRAMBufferSizeMB(), 42, 0);
+    }
+
+    private DefaultIndexWriter createWriter(IndexDefinition defn, boolean 
reindex) {
+        return new DefaultIndexWriter(defn, builder,
+                new DefaultDirectoryFactory(null, null), INDEX_DATA_CHILD_NAME,
+                SUGGEST_DATA_CHILD_NAME, reindex, writerConfig);
+    }
+
+
 }
\ No newline at end of file

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriterTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriterTest.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriterTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriterTest.java
 Wed Sep 27 05:19:44 2017
@@ -29,6 +29,8 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
 import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreUtils;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.DefaultDirectoryFactory;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.DirectoryFactory;
 import org.apache.jackrabbit.oak.plugins.index.lucene.directory.OakDirectory;
 import org.apache.jackrabbit.oak.spi.mount.Mount;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
@@ -65,6 +67,7 @@ public class MultiplexingIndexWriterTest
 
     private Mount fooMount;
     private Mount defaultMount;
+    private LuceneIndexWriterConfig writerConfig = new 
LuceneIndexWriterConfig();
 
     @Before
     public void setUp(){
@@ -73,15 +76,14 @@ public class MultiplexingIndexWriterTest
 
     @Test
     public void defaultWriterWithNoMounts() throws Exception{
-        LuceneIndexWriterFactory factory = new 
DefaultIndexWriterFactory(Mounts.defaultMountInfoProvider(), null,
-            null);
+        LuceneIndexWriterFactory factory = 
newDirectoryFactory(Mounts.defaultMountInfoProvider());
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
         assertThat(writer, instanceOf(DefaultIndexWriter.class));
     }
 
     @Test
     public void closeWithoutChange() throws Exception{
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, null);
+        LuceneIndexWriterFactory factory = newDirectoryFactory();
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
         assertFalse(writer.close(0));
         assertEquals(0, Iterables.size(getIndexDirNodes()));
@@ -89,7 +91,7 @@ public class MultiplexingIndexWriterTest
 
     @Test
     public void writesInDefaultMount() throws Exception{
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, null);
+        LuceneIndexWriterFactory factory = newDirectoryFactory();
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
 
         //1. Add entry in foo mount
@@ -115,7 +117,8 @@ public class MultiplexingIndexWriterTest
             .createCachingFDS(folder.newFolder().getAbsolutePath(),
                 folder.newFolder().getAbsolutePath());
 
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, new DataStoreBlobStore(ds));
+        DirectoryFactory directoryFactory = new DefaultDirectoryFactory(null, 
new DataStoreBlobStore(ds));
+        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
directoryFactory, writerConfig);
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
 
         //1. Add entry in foo mount
@@ -137,7 +140,7 @@ public class MultiplexingIndexWriterTest
 
     @Test
     public void deletes() throws Exception{
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, null);
+        LuceneIndexWriterFactory factory = newDirectoryFactory();
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
 
         writer.updateDocument("/libs/config", newDoc("/libs/config"));
@@ -169,7 +172,7 @@ public class MultiplexingIndexWriterTest
         mip = Mounts.newBuilder()
                 .mount("foo", "/content/remote").build();
         initializeMounts();
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, 
null, null);
+        LuceneIndexWriterFactory factory = newDirectoryFactory();
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
 
         writer.updateDocument("/content/remote/a", 
newDoc("/content/remote/a"));
@@ -215,4 +218,13 @@ public class MultiplexingIndexWriterTest
         return MultiplexersLucene.getIndexDirName(m);
     }
 
+    private LuceneIndexWriterFactory newDirectoryFactory(){
+        return newDirectoryFactory(mip);
+    }
+
+    private LuceneIndexWriterFactory newDirectoryFactory(MountInfoProvider 
mountInfoProvider){
+        DirectoryFactory directoryFactory = new DefaultDirectoryFactory(null, 
null);
+        return new DefaultIndexWriterFactory(mountInfoProvider, 
directoryFactory, writerConfig);
+    }
+
 }

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/LuceneIndexerProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/LuceneIndexerProvider.java?rev=1809803&r1=1809802&r2=1809803&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/LuceneIndexerProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/LuceneIndexerProvider.java
 Wed Sep 27 05:19:44 2017
@@ -34,6 +34,7 @@ import org.apache.jackrabbit.oak.plugins
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.directory.FSDirectoryFactory;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.DefaultIndexWriterFactory;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterConfig;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterFactory;
 import 
org.apache.jackrabbit.oak.plugins.index.progress.IndexingProgressReporter;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -52,7 +53,8 @@ public class LuceneIndexerProvider imple
     public LuceneIndexerProvider(IndexHelper indexHelper, IndexerSupport 
indexerSupport) throws IOException {
         this.indexHelper = indexHelper;
         this.dirFactory = new 
FSDirectoryFactory(indexerSupport.getLocalIndexDir());
-        this.indexWriterFactory = new 
DefaultIndexWriterFactory(indexHelper.getMountInfoProvider(), dirFactory);
+        this.indexWriterFactory = new 
DefaultIndexWriterFactory(indexHelper.getMountInfoProvider(),
+                dirFactory, new LuceneIndexWriterConfig());
     }
 
     @Override


Reply via email to