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 th...@apache.org on 2019/02/21 15:04:01 UTC

svn commit: r1854057 - /jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java

Author: thomasm
Date: Thu Feb 21 15:04:01 2019
New Revision: 1854057

URL: http://svn.apache.org/viewvc?rev=1854057&view=rev
Log:
OAK-8067 Measure fsync (called when closing the NRT index)

Modified:
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java?rev=1854057&r1=1854056&r2=1854057&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java Thu Feb 21 15:04:01 2019
@@ -59,6 +59,9 @@ import static org.apache.jackrabbit.oak.
 
 
 public class NRTIndex implements Closeable {
+
+    private static final boolean REGULAR_CLOSE = Boolean.getBoolean("oak.lucene.nrt.regularClose");
+
     private static final AtomicInteger COUNTER = new AtomicInteger();
     private static final Logger log = LoggerFactory.getLogger(NRTIndex.class);
 
@@ -200,10 +203,22 @@ public class NRTIndex implements Closeab
         assertAllReadersAreClosed();
 
         if (indexWriter != null) {
-            //TODO Close call can possibly be speeded up by
-            //avoiding merge and dropping stuff in memory. To be explored
-            //indexWrite.close(waitForMerges)
-            indexWriter.close();
+
+            long time = System.nanoTime();
+            if (REGULAR_CLOSE) {
+                indexWriter.close();
+            } else {
+                // don't merge, as anyway only keep two generations
+                indexWriter.close(false);
+            }
+            time = System.nanoTime() - time;
+            if (time > 100_000_000) {
+                // slower than 100 ms
+                log.info("Closing time: {} ns", time);
+            } else if (log.isTraceEnabled()) {
+                log.trace("Closing time: {} ns", time);
+            }
+
             sizeHisto.update(dirSize(directory));
             directory.close();
             FileUtils.deleteQuietly(indexDir);