Author: thomasm
Date: Wed Jul 22 12:50:35 2020
New Revision: 1880148

URL: http://svn.apache.org/viewvc?rev=1880148&view=rev
Log:
OAK-9147 Config option for NRT queue timeout

Modified:
    
jackrabbit/oak/trunk/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/HybridIndexTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/DocumentQueue.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FrozenNodeRefsByScanningCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/JsonIndexCommand.java

Modified: 
jackrabbit/oak/trunk/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/HybridIndexTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/HybridIndexTest.java?rev=1880148&r1=1880147&r2=1880148&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/HybridIndexTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/HybridIndexTest.java
 Wed Jul 22 12:50:35 2020
@@ -131,6 +131,7 @@ public class HybridIndexTest extends Abs
     private int asyncInterval = Integer.getInteger("asyncInterval", 5);
     private int cleanerIntervalInSecs = 
Integer.getInteger("cleanerIntervalInSecs", 10);
     private int queueSize = Integer.getInteger("queueSize", 1000);
+    private long queueTimeout = Long.getLong("queueTimeout", 100);
     private boolean hybridIndexEnabled = 
Boolean.getBoolean("hybridIndexEnabled");
     private boolean dumpStats = Boolean.getBoolean("dumpStats");
     private boolean useOakCodec = 
Boolean.parseBoolean(System.getProperty("useOakCodec", "true"));
@@ -385,7 +386,7 @@ public class HybridIndexTest extends Abs
                 null, //augmentorFactory
                 mip);
 
-        queue = new DocumentQueue(queueSize, tracker, executorService, 
statsProvider);
+        queue = new DocumentQueue(queueSize, queueTimeout, tracker, 
executorService, statsProvider);
         localIndexObserver = new LocalIndexObserver(queue, statsProvider);
         luceneEditorProvider.setIndexingQueue(queue);
 

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java?rev=1880148&r1=1880147&r2=1880148&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
 Wed Jul 22 12:50:35 2020
@@ -237,6 +237,15 @@ public class LuceneIndexProviderService
     )
     private static final String PROP_HYBRID_QUEUE_SIZE = "hybridQueueSize";
 
+    public static final long PROP_HYBRID_QUEUE_TIMEOUT_DEFAULT = 100;
+    @Property(
+            longValue = PROP_HYBRID_QUEUE_TIMEOUT_DEFAULT,
+            label = "Queue timeout",
+            description = "Maximum time to wait for adding entries to the 
queue used for storing Lucene Documents which need to be " +
+                    "added to local index"
+    )
+    private static final String PROP_HYBRID_QUEUE_TIMEOUT = 
"hybridQueueTimeout";
+
     private static final boolean PROP_DISABLE_DEFN_STORAGE_DEFAULT = false;
     @Property(
             boolValue = PROP_DISABLE_DEFN_STORAGE_DEFAULT,
@@ -631,7 +640,8 @@ public class LuceneIndexProviderService
         }
 
         int queueSize = 
PropertiesUtil.toInteger(config.get(PROP_HYBRID_QUEUE_SIZE), 
PROP_HYBRID_QUEUE_SIZE_DEFAULT);
-        documentQueue = new DocumentQueue(queueSize, tracker, 
getExecutorService(), statisticsProvider);
+        long queueOfferTimeoutMillis = 
PropertiesUtil.toLong(config.get(PROP_HYBRID_QUEUE_TIMEOUT), 
PROP_HYBRID_QUEUE_TIMEOUT_DEFAULT);
+        documentQueue = new DocumentQueue(queueSize, queueOfferTimeoutMillis, 
tracker, getExecutorService(), statisticsProvider);
         LocalIndexObserver localIndexObserver = new 
LocalIndexObserver(documentQueue, statisticsProvider);
         regs.add(bundleContext.registerService(Observer.class.getName(), 
localIndexObserver, null));
 

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/DocumentQueue.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/DocumentQueue.java?rev=1880148&r1=1880147&r2=1880148&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/DocumentQueue.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/DocumentQueue.java
 Wed Jul 22 12:50:35 2020
@@ -41,6 +41,7 @@ import org.apache.jackrabbit.oak.commons
 import org.apache.jackrabbit.oak.commons.concurrent.NotifyingFutureTask;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker;
 import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexNode;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter;
 import org.apache.jackrabbit.oak.stats.CounterStats;
 import org.apache.jackrabbit.oak.stats.MeterStats;
@@ -70,7 +71,7 @@ public class DocumentQueue implements Cl
      * Time in millis for which add call to queue
      * would wait before dropping off
      */
-    private final int offerTimeMillis;
+    private final long queueOfferTimeoutMillis;
 
     private volatile boolean stopped;
 
@@ -139,14 +140,15 @@ public class DocumentQueue implements Cl
     };
 
     public DocumentQueue(int maxQueueSize, IndexTracker tracker, Executor 
executor) {
-        this(maxQueueSize, tracker, executor, StatisticsProvider.NOOP);
+        this(maxQueueSize, 
LuceneIndexProviderService.PROP_HYBRID_QUEUE_TIMEOUT_DEFAULT,
+                tracker, executor, StatisticsProvider.NOOP);
     }
 
-    public DocumentQueue(int maxQueueSize, IndexTracker tracker, Executor 
executor, StatisticsProvider sp) {
+    public DocumentQueue(int maxQueueSize, long queueOfferTimeoutMillis, 
IndexTracker tracker, Executor executor, StatisticsProvider sp) {
         this.docsQueue = new LinkedBlockingDeque<>(maxQueueSize);
         this.tracker = tracker;
         this.executor = executor;
-        this.offerTimeMillis = 100; //Wait for at most 100 mills while adding 
stuff to queue
+        this.queueOfferTimeoutMillis = queueOfferTimeoutMillis;
         this.queueSizeStats = sp.getCounterStats("HYBRID_QUEUE_SIZE", 
StatsOptions.DEFAULT);
         this.added = sp.getMeter("HYBRID_ADDED", StatsOptions.DEFAULT);
         this.dropped = sp.getMeter("HYBRID_DROPPED", StatsOptions.DEFAULT);
@@ -170,7 +172,7 @@ public class DocumentQueue implements Cl
         checkState(!stopped);
         boolean added = false;
         try {
-            added = docsQueue.offer(doc, offerTimeMillis, 
TimeUnit.MILLISECONDS);
+            added = docsQueue.offer(doc, queueOfferTimeoutMillis, 
TimeUnit.MILLISECONDS);
         } catch (InterruptedException e) {
             Thread.currentThread().interrupt();
         }

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FrozenNodeRefsByScanningCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FrozenNodeRefsByScanningCommand.java?rev=1880148&r1=1880147&r2=1880148&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FrozenNodeRefsByScanningCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FrozenNodeRefsByScanningCommand.java
 Wed Jul 22 12:50:35 2020
@@ -74,7 +74,7 @@ import joptsimple.OptionSpec;
  * Note that any property with uuid that cannot be resolved will *not be 
reported*, as that
  * is a legitimate use case of uuid property use. Only uuids that resolve will 
be analysed.
  * <p>
- * Example: 
+ * Example:
  * <pre>
  * java -mx4g -jar oak-run-*.jar frozennoderefsbyscanning 
mongodb://localhost/&lt;dbname&gt; -user=admin -password=admin
  * </pre>
@@ -248,8 +248,9 @@ public class FrozenNodeRefsByScanningCom
                 
.getExitingScheduledExecutorService((ScheduledThreadPoolExecutor) 
Executors.newScheduledThreadPool(5));
         StatisticsProvider statsProvider = StatisticsProvider.NOOP;
         int queueSize = Integer.getInteger("queueSize", 1000);
+        long queueTimeout = Long.getLong("queueTimeoutMillis", 100);
         IndexTracker tracker = new IndexTracker();
-        DocumentQueue queue = new DocumentQueue(queueSize, tracker, 
executorService, statsProvider);
+        DocumentQueue queue = new DocumentQueue(queueSize, queueTimeout, 
tracker, executorService, statsProvider);
         ep.setIndexingQueue(queue);
         return ep;
     }

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/JsonIndexCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/JsonIndexCommand.java?rev=1880148&r1=1880147&r2=1880148&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/JsonIndexCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/JsonIndexCommand.java
 Wed Jul 22 12:50:35 2020
@@ -501,8 +501,9 @@ public class JsonIndexCommand implements
                 (ScheduledThreadPoolExecutor) 
Executors.newScheduledThreadPool(5));
         StatisticsProvider statsProvider = StatisticsProvider.NOOP;
         int queueSize = Integer.getInteger("queueSize", 1000);
+        long queueTimeout = Long.getLong("queueTimeoutMillis", 100);
         IndexTracker tracker = new IndexTracker();
-        DocumentQueue queue = new DocumentQueue(queueSize, tracker, 
executorService, statsProvider);
+        DocumentQueue queue = new DocumentQueue(queueSize, queueTimeout, 
tracker, executorService, statsProvider);
         ep.setIndexingQueue(queue);
         return ep;
     }


Reply via email to