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

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

commit ed433e767febe07c1b8ec6b3bf6f90188dca9aae
Author: Robert Newson <[email protected]>
AuthorDate: Wed Oct 4 09:47:13 2023 +0100

    test deleteOnClose within commit() itself
---
 nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java   | 7 ++++++-
 .../main/java/org/apache/couchdb/nouveau/core/IndexManager.java    | 2 +-
 .../java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexTest.java  | 5 ++---
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java 
b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java
index 2db7a674b..ef50688ff 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java
@@ -98,6 +98,9 @@ public abstract class Index implements Closeable {
         final long updateSeq;
         final long purgeSeq;
         synchronized (this) {
+            if (deleteOnClose) {
+                return false;
+            }
             updateSeq = this.updateSeq;
             purgeSeq = this.purgeSeq;
         }
@@ -144,7 +147,9 @@ public abstract class Index implements Closeable {
     protected abstract void doClose() throws IOException;
 
     public boolean isDeleteOnClose() {
-        return deleteOnClose;
+        synchronized (this) {
+            return deleteOnClose;
+        }
     }
 
     public void setDeleteOnClose(final boolean deleteOnClose) {
diff --git 
a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java 
b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java
index 72fbc41bd..caa265866 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java
@@ -312,7 +312,7 @@ public final class IndexManager implements Managed {
                 () -> {
                     if (index.tryAcquire()) {
                         try {
-                            if (!index.isDeleteOnClose() && index.commit()) {
+                            if (index.commit()) {
                                 LOGGER.debug("committed {} before close", 
name);
                             }
                         } finally {
diff --git 
a/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexTest.java
 
b/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexTest.java
index eaaad1780..98d752fa8 100644
--- 
a/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexTest.java
+++ 
b/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexTest.java
@@ -50,12 +50,11 @@ public class Lucene9IndexTest {
     protected final Index setup(final Path path) throws IOException {
         final IndexDefinition indexDefinition = new IndexDefinition();
         indexDefinition.setDefaultAnalyzer("standard");
-        final Index index = indexLoader().apply(path, indexDefinition);
-        index.setDeleteOnClose(true);
-        return index;
+        return indexLoader().apply(path, indexDefinition);
     }
 
     protected final void cleanup(final Index index) throws IOException {
+        index.setDeleteOnClose(true);
         index.close();
     }
 

Reply via email to