This is an automated email from the ASF dual-hosted git repository.

rnewson pushed a commit to branch nouveau-fixes
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 272a447a64c00d13284d0f3c5225c6b9249cfee5
Author: Robert Newson <[email protected]>
AuthorDate: Tue Aug 18 20:30:29 2026 +0100

    refresh searchermanager only when index changes
---
 .../main/java/org/apache/couchdb/nouveau/lucene/LuceneIndex.java  | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git 
a/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene/LuceneIndex.java
 
b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene/LuceneIndex.java
index 300c73ec0..cabf2b225 100644
--- 
a/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene/LuceneIndex.java
+++ 
b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene/LuceneIndex.java
@@ -31,6 +31,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.apache.couchdb.nouveau.api.DocumentDeleteRequest;
@@ -107,6 +108,7 @@ public class LuceneIndex extends Index {
     private final Analyzer analyzer;
     private final IndexWriter writer;
     private final SearcherManager searcherManager;
+    private final AtomicBoolean searcherManagerStale = new 
AtomicBoolean(false);
     private final LuceneIndexSchema schema;
 
     public LuceneIndex(
@@ -147,11 +149,13 @@ public class LuceneIndex extends Index {
         final Document doc = toDocument(docId, request);
         schema.update(request.fields());
         writer.updateDocument(docIdTerm, doc);
+        searcherManagerStale.set(true);
     }
 
     @Override
     public void doDelete(final String docId, final DocumentDeleteRequest 
request) throws IOException {
         writer.deleteDocuments(docIdTerm(docId));
+        searcherManagerStale.set(true);
     }
 
     @Override
@@ -208,7 +212,9 @@ public class LuceneIndex extends Index {
             cm = new MultiCollectorManager(hits);
         }
 
-        searcherManager.maybeRefreshBlocking();
+        if (searcherManagerStale.getAndSet(false)) {
+            searcherManager.maybeRefreshBlocking();
+        }
 
         final IndexSearcher searcher = searcherManager.acquire();
         try {

Reply via email to