diff --git a/src/main/java/it/cavallium/dbengine/database/LLUtils.java b/src/main/java/it/cavallium/dbengine/database/LLUtils.java index 435288e..dbf09d0 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLUtils.java +++ b/src/main/java/it/cavallium/dbengine/database/LLUtils.java @@ -647,7 +647,12 @@ public class LLUtils { } public static Mono finalizeResource(Resource resource) { - return Mono.fromRunnable(() -> LLUtils.finalizeResourceNow(resource)); + Mono runnable = Mono.fromRunnable(() -> LLUtils.finalizeResourceNow(resource)); + if (resource instanceof LuceneCloseable) { + return runnable.transform(LuceneUtils::scheduleLucene); + } else { + return runnable; + } } public static Mono finalizeResource(SafeCloseable resource) { @@ -956,7 +961,11 @@ public class LLUtils { send.close(); } if (next instanceof SafeCloseable closeable) { if (manual || closeable instanceof DiscardingCloseable) { - closeable.close(); + if (!manual && !LuceneUtils.isLuceneThread() && closeable instanceof LuceneCloseable luceneCloseable) { + luceneScheduler().schedule(() -> luceneCloseable.close()); + } else { + closeable.close(); + } } } else if (next instanceof Resource resource && resource.isAccessible()) { resource.close();