From fd202d8dfa7634a10ac2dc2a28159f2f32a25a89 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Sat, 23 Jul 2022 15:12:44 +0200 Subject: [PATCH] Handle discards --- .../java/it/cavallium/dbengine/client/LuceneIndexImpl.java | 7 ++++--- .../it/cavallium/dbengine/database/LLMultiLuceneIndex.java | 6 +++--- .../database/collections/DatabaseMapDictionary.java | 2 +- .../dbengine/database/disk/LLLocalMultiLuceneIndex.java | 2 +- .../dbengine/lucene/searcher/CountMultiSearcher.java | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/it/cavallium/dbengine/client/LuceneIndexImpl.java b/src/main/java/it/cavallium/dbengine/client/LuceneIndexImpl.java index bc81bd9..f68ebdc 100644 --- a/src/main/java/it/cavallium/dbengine/client/LuceneIndexImpl.java +++ b/src/main/java/it/cavallium/dbengine/client/LuceneIndexImpl.java @@ -14,6 +14,7 @@ import it.cavallium.dbengine.database.LLSearchResultShard.ResourcesLLSearchResul import it.cavallium.dbengine.database.LLSnapshot; import it.cavallium.dbengine.database.LLTerm; import it.cavallium.dbengine.database.LLUpdateDocument; +import it.cavallium.dbengine.database.LLUtils; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.lucene.LuceneCloseable; import it.cavallium.dbengine.lucene.LuceneUtils; @@ -117,7 +118,7 @@ public class LuceneIndexImpl implements LuceneIndex { .mapNotNull(shards -> mergeResults(queryParams, shards)) .map(llSearchResult -> mapResults(llSearchResult)) .defaultIfEmpty(Hits.empty()) - .doOnDiscard(DiscardingCloseable.class, DiscardingCloseable::close); + .doOnDiscard(DiscardingCloseable.class, LLUtils::onDiscard); } @Override @@ -131,7 +132,7 @@ public class LuceneIndexImpl implements LuceneIndex { .mapNotNull(shards -> mergeResults(queryParams, shards)) .map(llSearchResult -> mapResults(llSearchResult)) .defaultIfEmpty(Hits.empty()) - .doOnDiscard(DiscardingCloseable.class, DiscardingCloseable::close); + .doOnDiscard(DiscardingCloseable.class, LLUtils::onDiscard); } @Override @@ -158,7 +159,7 @@ public class LuceneIndexImpl implements LuceneIndex { public Mono count(@Nullable CompositeSnapshot snapshot, Query query) { return luceneIndex .count(resolveSnapshot(snapshot), query, MAX_COUNT_TIME) - .doOnDiscard(DiscardingCloseable.class, DiscardingCloseable::close); + .doOnDiscard(DiscardingCloseable.class, LLUtils::onDiscard); } @Override diff --git a/src/main/java/it/cavallium/dbengine/database/LLMultiLuceneIndex.java b/src/main/java/it/cavallium/dbengine/database/LLMultiLuceneIndex.java index bd04ad7..a7729ed 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLMultiLuceneIndex.java +++ b/src/main/java/it/cavallium/dbengine/database/LLMultiLuceneIndex.java @@ -130,7 +130,7 @@ public class LLMultiLuceneIndex implements LLLuceneIndex { queryParams, keyFieldName, mltDocumentFields - )).doOnDiscard(DiscardingCloseable.class, SafeCloseable::close); + )).doOnDiscard(DiscardingCloseable.class, LLUtils::onDiscard); } private Mono mergeShards(List shards) { @@ -166,7 +166,7 @@ public class LLMultiLuceneIndex implements LLLuceneIndex { return luceneIndicesFlux.flatMap(luceneIndex -> luceneIndex.search(snapshot, queryParams, keyFieldName - )).doOnDiscard(DiscardingCloseable.class, SafeCloseable::close); + )).doOnDiscard(DiscardingCloseable.class, LLUtils::onDiscard); } @Override @@ -178,7 +178,7 @@ public class LLMultiLuceneIndex implements LLLuceneIndex { queries, normalizationQuery, bucketParams - )).collectList().flatMap(this::mergeShards).doOnDiscard(DiscardingCloseable.class, SafeCloseable::close); + )).collectList().flatMap(this::mergeShards).doOnDiscard(DiscardingCloseable.class, LLUtils::onDiscard); } @Override diff --git a/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionary.java b/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionary.java index 4801fd2..12e3e85 100644 --- a/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionary.java +++ b/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionary.java @@ -115,7 +115,7 @@ public class DatabaseMapDictionary extends DatabaseMapDictionaryDeep e.getValue().close()) .doOnDiscard(Entry.class, e -> { if (e.getValue() instanceof DatabaseStageEntry resource) { - resource.close(); + LLUtils.onDiscard(resource); } }) .map(Entry::getKey); diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalMultiLuceneIndex.java b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalMultiLuceneIndex.java index 030f712..cae6584 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalMultiLuceneIndex.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalMultiLuceneIndex.java @@ -164,7 +164,7 @@ public class LLLocalMultiLuceneIndex extends SimpleResource implements LLLuceneI .collectList() .doOnDiscard(LLIndexSearcher.class, indexSearcher -> { try { - indexSearcher.close(); + LLUtils.onDiscard(indexSearcher); } catch (UncheckedIOException ex) { LOG.error("Failed to close an index searcher", ex); } diff --git a/src/main/java/it/cavallium/dbengine/lucene/searcher/CountMultiSearcher.java b/src/main/java/it/cavallium/dbengine/lucene/searcher/CountMultiSearcher.java index ea32944..3f97902 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/searcher/CountMultiSearcher.java +++ b/src/main/java/it/cavallium/dbengine/lucene/searcher/CountMultiSearcher.java @@ -64,7 +64,7 @@ public class CountMultiSearcher implements MultiSearcher { return new LuceneSearchResult(totalHitsCount, Flux.empty()); }) - .doOnDiscard(LuceneSearchResult.class, luceneSearchResult -> luceneSearchResult.close()), + .doOnDiscard(LuceneSearchResult.class, LLUtils::onDiscard), LLUtils::finalizeResource); }