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