diff --git a/src/main/java/it/cavallium/dbengine/client/Hits.java b/src/main/java/it/cavallium/dbengine/client/Hits.java index 1e5dc0f..3cdc74f 100644 --- a/src/main/java/it/cavallium/dbengine/client/Hits.java +++ b/src/main/java/it/cavallium/dbengine/client/Hits.java @@ -5,6 +5,7 @@ import io.netty5.buffer.api.Owned; import io.netty5.buffer.api.Send; import it.cavallium.dbengine.client.query.current.data.TotalHitsCount; import io.netty5.buffer.api.internal.ResourceSupport; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.collections.ValueGetter; import it.cavallium.dbengine.database.collections.ValueTransformer; import it.cavallium.dbengine.utils.SimpleResource; @@ -15,7 +16,7 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.util.function.Tuples; -public final class Hits extends SimpleResource { +public final class Hits extends SimpleResource implements DiscardingCloseable { private static final Hits EMPTY_HITS = new Hits<>(Flux.empty(), TotalHitsCount.of(0, true), null, false); private Flux results; diff --git a/src/main/java/it/cavallium/dbengine/client/LuceneIndexImpl.java b/src/main/java/it/cavallium/dbengine/client/LuceneIndexImpl.java index 5af1eff..0c28a0f 100644 --- a/src/main/java/it/cavallium/dbengine/client/LuceneIndexImpl.java +++ b/src/main/java/it/cavallium/dbengine/client/LuceneIndexImpl.java @@ -5,6 +5,7 @@ import io.netty5.buffer.api.internal.ResourceSupport; import it.cavallium.dbengine.client.query.ClientQueryParams; import it.cavallium.dbengine.client.query.current.data.Query; import it.cavallium.dbengine.client.query.current.data.TotalHitsCount; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.LLKeyScore; import it.cavallium.dbengine.database.LLLuceneIndex; import it.cavallium.dbengine.database.LLSearchResult; @@ -13,6 +14,7 @@ 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.LuceneUtils; import it.cavallium.dbengine.lucene.collector.Buckets; import it.cavallium.dbengine.lucene.searcher.BucketParams; @@ -112,7 +114,7 @@ public class LuceneIndexImpl implements LuceneIndex { .mapNotNull(shards -> mergeResults(queryParams, shards)) .map(this::mapResults) .defaultIfEmpty(Hits.empty()) - .doOnDiscard(SimpleResource.class, SimpleResource::close); + .doOnDiscard(DiscardingCloseable.class, DiscardingCloseable::close); } @Override @@ -126,7 +128,7 @@ public class LuceneIndexImpl implements LuceneIndex { .mapNotNull(shards -> mergeResults(queryParams, shards)) .map(this::mapResults) .defaultIfEmpty(Hits.empty()) - .doOnDiscard(SimpleResource.class, SimpleResource::close); + .doOnDiscard(DiscardingCloseable.class, DiscardingCloseable::close); } @Override diff --git a/src/main/java/it/cavallium/dbengine/database/BufSupplier.java b/src/main/java/it/cavallium/dbengine/database/BufSupplier.java index bd1b157..590bce3 100644 --- a/src/main/java/it/cavallium/dbengine/database/BufSupplier.java +++ b/src/main/java/it/cavallium/dbengine/database/BufSupplier.java @@ -4,7 +4,7 @@ import io.netty5.buffer.api.Buffer; import io.netty5.buffer.api.Send; import java.util.function.Supplier; -public abstract class BufSupplier implements SafeCloseable, Supplier { +public abstract class BufSupplier implements SafeCloseable, DiscardingCloseable, Supplier { public static BufSupplier of(Supplier supplier) { return new SimpleBufSupplier(supplier); diff --git a/src/main/java/it/cavallium/dbengine/database/DiscardingCloseable.java b/src/main/java/it/cavallium/dbengine/database/DiscardingCloseable.java new file mode 100644 index 0000000..876eb2e --- /dev/null +++ b/src/main/java/it/cavallium/dbengine/database/DiscardingCloseable.java @@ -0,0 +1,6 @@ +package it.cavallium.dbengine.database; + +/** + * Closeable resource that can be closed if discarded + */ +public interface DiscardingCloseable extends SafeCloseable {} diff --git a/src/main/java/it/cavallium/dbengine/database/LLEntry.java b/src/main/java/it/cavallium/dbengine/database/LLEntry.java index 7f66eba..2adeb76 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLEntry.java +++ b/src/main/java/it/cavallium/dbengine/database/LLEntry.java @@ -14,7 +14,7 @@ import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class LLEntry extends SimpleResource implements SafeCloseable { +public class LLEntry extends SimpleResource implements DiscardingCloseable { private static final Logger logger = LogManager.getLogger(LLEntry.class); private Buffer key; diff --git a/src/main/java/it/cavallium/dbengine/database/LLSearchResultShard.java b/src/main/java/it/cavallium/dbengine/database/LLSearchResultShard.java index 8d21b62..50bc5ca 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLSearchResultShard.java +++ b/src/main/java/it/cavallium/dbengine/database/LLSearchResultShard.java @@ -10,7 +10,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import reactor.core.publisher.Flux; -public final class LLSearchResultShard extends SimpleResource { +public final class LLSearchResultShard extends SimpleResource implements DiscardingCloseable { private static final Logger logger = LogManager.getLogger(LLSearchResultShard.class); diff --git a/src/main/java/it/cavallium/dbengine/database/LLUtils.java b/src/main/java/it/cavallium/dbengine/database/LLUtils.java index a139826..2e0c5aa 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLUtils.java +++ b/src/main/java/it/cavallium/dbengine/database/LLUtils.java @@ -920,27 +920,31 @@ public class LLUtils { if (DEBUG_ALL_DROPS) { logger.trace("Dropped: {}", () -> next.getClass().getName()); } - closeResource(next); + closeResource(next, false); } public static void onDiscard(Object next) { if (DEBUG_ALL_DISCARDS) { logger.trace("Discarded: {}", () -> next.getClass().getName()); } - closeResource(next); + closeResource(next, false); } public static void closeResource(Object next) { + closeResource(next, true); + } + + private static void closeResource(Object next, boolean manual) { if (next instanceof Send send) { send.close(); - } if (next instanceof SimpleResource simpleResource) { - simpleResource.close(); + } if (next instanceof SafeCloseable closeable) { + if (manual || closeable instanceof DiscardingCloseable) { + closeable.close(); + } } else if (next instanceof Resource resource && resource.isAccessible()) { resource.close(); } else if (next instanceof Iterable iterable) { iterable.forEach(LLUtils::onNextDropped); - } else if (next instanceof SafeCloseable safeCloseable) { - safeCloseable.close(); } else if (next instanceof AbstractImmutableNativeReference rocksObj) { if (rocksObj.isOwningHandle()) { rocksObj.close(); diff --git a/src/main/java/it/cavallium/dbengine/database/OptionalBuf.java b/src/main/java/it/cavallium/dbengine/database/OptionalBuf.java index 1c43390..24df549 100644 --- a/src/main/java/it/cavallium/dbengine/database/OptionalBuf.java +++ b/src/main/java/it/cavallium/dbengine/database/OptionalBuf.java @@ -9,7 +9,7 @@ import java.util.function.Function; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public final class OptionalBuf implements SafeCloseable { +public final class OptionalBuf implements DiscardingCloseable { private static final OptionalBuf EMPTY = new OptionalBuf(null); private final Buffer buffer; diff --git a/src/main/java/it/cavallium/dbengine/database/RangeSupplier.java b/src/main/java/it/cavallium/dbengine/database/RangeSupplier.java index a56bff2..d945c42 100644 --- a/src/main/java/it/cavallium/dbengine/database/RangeSupplier.java +++ b/src/main/java/it/cavallium/dbengine/database/RangeSupplier.java @@ -3,7 +3,7 @@ package it.cavallium.dbengine.database; import io.netty5.buffer.api.Send; import java.util.function.Supplier; -public abstract class RangeSupplier implements SafeCloseable, Supplier { +public abstract class RangeSupplier implements DiscardingCloseable, Supplier { public static RangeSupplier of(Supplier supplier) { return new SimpleSupplier(supplier); diff --git a/src/main/java/it/cavallium/dbengine/database/SubStageEntry.java b/src/main/java/it/cavallium/dbengine/database/SubStageEntry.java index bd8839d..7e1f7a8 100644 --- a/src/main/java/it/cavallium/dbengine/database/SubStageEntry.java +++ b/src/main/java/it/cavallium/dbengine/database/SubStageEntry.java @@ -4,7 +4,7 @@ import it.cavallium.dbengine.database.collections.DatabaseStage; import java.util.Map.Entry; import java.util.Objects; -public final class SubStageEntry> implements SafeCloseable, Entry { +public final class SubStageEntry> implements DiscardingCloseable, Entry { private final T key; private final U value; diff --git a/src/main/java/it/cavallium/dbengine/database/disk/CachedIndexSearcherManager.java b/src/main/java/it/cavallium/dbengine/database/disk/CachedIndexSearcherManager.java index d1a4e4e..6cdd472 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/CachedIndexSearcherManager.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/CachedIndexSearcherManager.java @@ -5,6 +5,7 @@ import static it.cavallium.dbengine.client.UninterruptibleScheduler.uninterrupti import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.LLSnapshot; import it.cavallium.dbengine.database.LLUtils; import it.cavallium.dbengine.utils.SimpleResource; diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLIndexSearcher.java b/src/main/java/it/cavallium/dbengine/database/disk/LLIndexSearcher.java index ca2b816..6f9a2e8 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLIndexSearcher.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLIndexSearcher.java @@ -3,6 +3,7 @@ package it.cavallium.dbengine.database.disk; import io.netty5.buffer.api.Drop; import io.netty5.buffer.api.Owned; import io.netty5.buffer.api.internal.ResourceSupport; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.utils.SimpleResource; import java.io.Closeable; @@ -13,7 +14,7 @@ import org.apache.logging.log4j.Logger; import org.apache.lucene.index.IndexReader; import org.apache.lucene.search.IndexSearcher; -public abstract class LLIndexSearcher extends SimpleResource { +public abstract class LLIndexSearcher extends SimpleResource implements DiscardingCloseable { protected static final Logger LOG = LogManager.getLogger(LLIndexSearcher.class); diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLIndexSearchers.java b/src/main/java/it/cavallium/dbengine/database/disk/LLIndexSearchers.java index 19d36a8..f8cde7f 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLIndexSearchers.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLIndexSearchers.java @@ -5,6 +5,7 @@ import io.netty5.buffer.api.Owned; import io.netty5.buffer.api.Resource; import io.netty5.buffer.api.Send; import io.netty5.buffer.api.internal.ResourceSupport; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.lucene.searcher.ShardIndexSearcher; import it.cavallium.dbengine.utils.SimpleResource; @@ -23,7 +24,7 @@ import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.MultiReader; import org.apache.lucene.search.IndexSearcher; -public interface LLIndexSearchers extends SafeCloseable { +public interface LLIndexSearchers extends DiscardingCloseable { static LLIndexSearchers of(List indexSearchers) { return new ShardedIndexSearchers(indexSearchers); diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java index 04ef814..807c879 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java @@ -18,6 +18,7 @@ import io.netty5.buffer.api.ReadableComponent; import io.netty5.buffer.api.Resource; import it.cavallium.dbengine.client.BadBlock; import it.cavallium.dbengine.database.ColumnUtils; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.LLDelta; import it.cavallium.dbengine.database.LLDictionary; import it.cavallium.dbengine.database.LLDictionaryResultType; @@ -894,7 +895,8 @@ public class LLLocalDictionary implements LLDictionary { }), LLUtils::finalizeResource).flux(); } - private record RocksObjTuple>(T t1, U t2) implements SafeCloseable { + private record RocksObjTuple>(T t1, U t2) implements + DiscardingCloseable { @Override public void close() { diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LuceneIndexSnapshot.java b/src/main/java/it/cavallium/dbengine/database/disk/LuceneIndexSnapshot.java index a160425..4b88319 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LuceneIndexSnapshot.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LuceneIndexSnapshot.java @@ -1,5 +1,6 @@ package it.cavallium.dbengine.database.disk; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.utils.SimpleResource; import java.io.Closeable; import java.io.IOException; @@ -11,7 +12,7 @@ import org.apache.lucene.index.IndexCommit; import org.apache.lucene.search.IndexSearcher; import org.jetbrains.annotations.Nullable; -public class LuceneIndexSnapshot extends SimpleResource { +public class LuceneIndexSnapshot extends SimpleResource implements DiscardingCloseable { private final IndexCommit snapshot; private boolean initialized; diff --git a/src/main/java/it/cavallium/dbengine/database/disk/RocksDBRefs.java b/src/main/java/it/cavallium/dbengine/database/disk/RocksDBRefs.java index 36c0c63..2beb3c4 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/RocksDBRefs.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/RocksDBRefs.java @@ -1,10 +1,11 @@ package it.cavallium.dbengine.database.disk; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import java.util.ArrayList; import org.rocksdb.AbstractImmutableNativeReference; -public final class RocksDBRefs implements SafeCloseable { +public final class RocksDBRefs implements DiscardingCloseable { private final ArrayList list = new ArrayList<>(); private boolean closed; diff --git a/src/main/java/it/cavallium/dbengine/database/disk/RocksIterWithReadOpts.java b/src/main/java/it/cavallium/dbengine/database/disk/RocksIterWithReadOpts.java index ca2194d..246f3f1 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/RocksIterWithReadOpts.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/RocksIterWithReadOpts.java @@ -1,10 +1,11 @@ package it.cavallium.dbengine.database.disk; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.database.disk.rocksdb.RocksIteratorObj; import org.rocksdb.ReadOptions; -public record RocksIterWithReadOpts(ReadOptions readOptions, RocksIteratorObj iter) implements SafeCloseable { +public record RocksIterWithReadOpts(ReadOptions readOptions, RocksIteratorObj iter) implements DiscardingCloseable { @Override public void close() { diff --git a/src/main/java/it/cavallium/dbengine/database/disk/UpdateAtomicResult.java b/src/main/java/it/cavallium/dbengine/database/disk/UpdateAtomicResult.java index cca2cfc..1059934 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/UpdateAtomicResult.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/UpdateAtomicResult.java @@ -1,6 +1,7 @@ package it.cavallium.dbengine.database.disk; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; -public sealed interface UpdateAtomicResult extends SafeCloseable permits UpdateAtomicResultBinaryChanged, +public sealed interface UpdateAtomicResult extends DiscardingCloseable permits UpdateAtomicResultBinaryChanged, UpdateAtomicResultDelta, UpdateAtomicResultNothing, UpdateAtomicResultPrevious, UpdateAtomicResultCurrent {} diff --git a/src/main/java/it/cavallium/dbengine/database/serialization/BufferDataInputOwned.java b/src/main/java/it/cavallium/dbengine/database/serialization/BufferDataInputOwned.java index a4787c2..55501bf 100644 --- a/src/main/java/it/cavallium/dbengine/database/serialization/BufferDataInputOwned.java +++ b/src/main/java/it/cavallium/dbengine/database/serialization/BufferDataInputOwned.java @@ -2,13 +2,14 @@ package it.cavallium.dbengine.database.serialization; import io.netty5.buffer.api.Buffer; import io.netty5.buffer.api.Send; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import java.io.DataInput; import java.nio.charset.StandardCharsets; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class BufferDataInputOwned implements SafeCloseable, BufferDataInput { +public class BufferDataInputOwned implements DiscardingCloseable, BufferDataInput { @Nullable private final Buffer buf; diff --git a/src/main/java/it/cavallium/dbengine/lucene/CloseableIterable.java b/src/main/java/it/cavallium/dbengine/lucene/CloseableIterable.java index 3d555a4..7a6b67a 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/CloseableIterable.java +++ b/src/main/java/it/cavallium/dbengine/lucene/CloseableIterable.java @@ -1,12 +1,13 @@ package it.cavallium.dbengine.lucene; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import java.io.Closeable; import java.io.IOException; import java.util.Iterator; import org.jetbrains.annotations.NotNull; -public interface CloseableIterable extends Iterable, SafeCloseable { +public interface CloseableIterable extends Iterable, DiscardingCloseable { @Override void close(); diff --git a/src/main/java/it/cavallium/dbengine/lucene/HugePqArray.java b/src/main/java/it/cavallium/dbengine/lucene/HugePqArray.java index 41138b1..691c0a1 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/HugePqArray.java +++ b/src/main/java/it/cavallium/dbengine/lucene/HugePqArray.java @@ -1,6 +1,7 @@ package it.cavallium.dbengine.lucene; import io.netty5.buffer.api.Buffer; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.LLUtils; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.database.disk.LLTempHugePqEnv; @@ -14,7 +15,7 @@ import org.rocksdb.RocksDB; import org.rocksdb.RocksDBException; import org.rocksdb.WriteOptions; -public class HugePqArray extends SimpleResource implements IArray, SafeCloseable { +public class HugePqArray extends SimpleResource implements IArray, DiscardingCloseable { static { RocksDB.loadLibrary(); diff --git a/src/main/java/it/cavallium/dbengine/lucene/LLSlotDocCodec.java b/src/main/java/it/cavallium/dbengine/lucene/LLSlotDocCodec.java index d0ba9ef..5565fb0 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/LLSlotDocCodec.java +++ b/src/main/java/it/cavallium/dbengine/lucene/LLSlotDocCodec.java @@ -1,6 +1,7 @@ package it.cavallium.dbengine.lucene; import io.netty5.buffer.api.Buffer; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.database.disk.LLTempHugePqEnv; import it.cavallium.dbengine.utils.SimpleResource; @@ -20,7 +21,7 @@ import org.rocksdb.AbstractComparator; import org.rocksdb.ComparatorOptions; public class LLSlotDocCodec extends SimpleResource - implements HugePqCodec, FieldValueHitQueue, SafeCloseable { + implements HugePqCodec, FieldValueHitQueue, DiscardingCloseable { private final SortField[] fields; diff --git a/src/main/java/it/cavallium/dbengine/lucene/PriorityQueue.java b/src/main/java/it/cavallium/dbengine/lucene/PriorityQueue.java index f52c932..c744129 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/PriorityQueue.java +++ b/src/main/java/it/cavallium/dbengine/lucene/PriorityQueue.java @@ -1,8 +1,9 @@ package it.cavallium.dbengine.lucene; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; -public interface PriorityQueue extends ResourceIterable, SafeCloseable { +public interface PriorityQueue extends ResourceIterable, DiscardingCloseable { /** * Adds an Object to a PriorityQueue in log(size) time. If one tries to add more objects than maxSize from initialize diff --git a/src/main/java/it/cavallium/dbengine/lucene/ResourceIterable.java b/src/main/java/it/cavallium/dbengine/lucene/ResourceIterable.java index 4d18bb7..4457baf 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/ResourceIterable.java +++ b/src/main/java/it/cavallium/dbengine/lucene/ResourceIterable.java @@ -1,12 +1,13 @@ package it.cavallium.dbengine.lucene; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import java.io.Closeable; import java.util.Iterator; import org.jetbrains.annotations.NotNull; import reactor.core.publisher.Flux; -public interface ResourceIterable extends SafeCloseable { +public interface ResourceIterable extends DiscardingCloseable { /** * Iterate this PriorityQueue diff --git a/src/main/java/it/cavallium/dbengine/lucene/collector/FullDocsCollector.java b/src/main/java/it/cavallium/dbengine/lucene/collector/FullDocsCollector.java index 1081395..f0e4af2 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/collector/FullDocsCollector.java +++ b/src/main/java/it/cavallium/dbengine/lucene/collector/FullDocsCollector.java @@ -16,6 +16,7 @@ */ package it.cavallium.dbengine.lucene.collector; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.lucene.FullDocs; import it.cavallium.dbengine.lucene.LLDoc; @@ -40,7 +41,7 @@ import org.apache.lucene.search.TotalHits; * all methods, in order to avoid a NullPointerException. */ public abstract class FullDocsCollector & Reversable>, INTERNAL extends LLDoc, - EXTERNAL extends LLDoc> extends SimpleResource implements Collector, SafeCloseable { + EXTERNAL extends LLDoc> extends SimpleResource implements Collector, DiscardingCloseable { /** * The priority queue which holds the top documents. Note that different implementations of diff --git a/src/main/java/it/cavallium/dbengine/lucene/collector/FullFieldDocs.java b/src/main/java/it/cavallium/dbengine/lucene/collector/FullFieldDocs.java index c533caa..1625fbb 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/collector/FullFieldDocs.java +++ b/src/main/java/it/cavallium/dbengine/lucene/collector/FullFieldDocs.java @@ -1,5 +1,6 @@ package it.cavallium.dbengine.lucene.collector; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.lucene.FullDocs; import it.cavallium.dbengine.lucene.LLDoc; @@ -11,7 +12,7 @@ import org.apache.lucene.search.SortField; import org.apache.lucene.search.TotalHits; import reactor.core.publisher.Flux; -public class FullFieldDocs extends SimpleResource implements FullDocs, SafeCloseable { +public class FullFieldDocs extends SimpleResource implements FullDocs, DiscardingCloseable { private final FullDocs fullDocs; private final SortField[] fields; diff --git a/src/main/java/it/cavallium/dbengine/lucene/comparators/DoubleComparator.java b/src/main/java/it/cavallium/dbengine/lucene/comparators/DoubleComparator.java index 0b96587..897e40f 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/comparators/DoubleComparator.java +++ b/src/main/java/it/cavallium/dbengine/lucene/comparators/DoubleComparator.java @@ -17,6 +17,7 @@ package it.cavallium.dbengine.lucene.comparators; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.database.disk.LLTempHugePqEnv; import it.cavallium.dbengine.lucene.DoubleCodec; @@ -33,7 +34,7 @@ import org.apache.lucene.search.comparators.NumericComparator; * skipping functionality - an iterator that can skip over non-competitive documents. * Based on {@link org.apache.lucene.search.comparators.DoubleComparator} */ -public class DoubleComparator extends NumericComparator implements SafeCloseable { +public class DoubleComparator extends NumericComparator implements DiscardingCloseable { private final IArray values; protected double topValue; protected double bottom; diff --git a/src/main/java/it/cavallium/dbengine/lucene/comparators/FloatComparator.java b/src/main/java/it/cavallium/dbengine/lucene/comparators/FloatComparator.java index c3ca981..ce4ae9c 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/comparators/FloatComparator.java +++ b/src/main/java/it/cavallium/dbengine/lucene/comparators/FloatComparator.java @@ -17,6 +17,7 @@ package it.cavallium.dbengine.lucene.comparators; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.database.disk.LLTempHugePqEnv; import it.cavallium.dbengine.lucene.FloatCodec; @@ -33,7 +34,7 @@ import org.apache.lucene.search.comparators.NumericComparator; * skipping functionality – an iterator that can skip over non-competitive documents. * Based on {@link org.apache.lucene.search.comparators.FloatComparator} */ -public class FloatComparator extends NumericComparator implements SafeCloseable { +public class FloatComparator extends NumericComparator implements DiscardingCloseable { private final IArray values; protected float topValue; protected float bottom; diff --git a/src/main/java/it/cavallium/dbengine/lucene/comparators/IntComparator.java b/src/main/java/it/cavallium/dbengine/lucene/comparators/IntComparator.java index eae8fbc..40dd6fe 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/comparators/IntComparator.java +++ b/src/main/java/it/cavallium/dbengine/lucene/comparators/IntComparator.java @@ -17,6 +17,7 @@ package it.cavallium.dbengine.lucene.comparators; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.database.disk.LLTempHugePqEnv; import it.cavallium.dbengine.lucene.IArray; @@ -33,7 +34,7 @@ import org.apache.lucene.search.comparators.NumericComparator; * skipping functionality – an iterator that can skip over non-competitive documents. * Based on {@link org.apache.lucene.search.comparators.IntComparator} */ -public class IntComparator extends NumericComparator implements SafeCloseable { +public class IntComparator extends NumericComparator implements DiscardingCloseable { private final IArray values; protected int topValue; protected int bottom; diff --git a/src/main/java/it/cavallium/dbengine/lucene/comparators/LongComparator.java b/src/main/java/it/cavallium/dbengine/lucene/comparators/LongComparator.java index 2d9fb84..99ed24e 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/comparators/LongComparator.java +++ b/src/main/java/it/cavallium/dbengine/lucene/comparators/LongComparator.java @@ -19,6 +19,7 @@ package it.cavallium.dbengine.lucene.comparators; import static java.util.Objects.requireNonNull; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.database.disk.LLTempHugePqEnv; import it.cavallium.dbengine.lucene.HugePqArray; @@ -36,7 +37,7 @@ import org.apache.lucene.search.comparators.NumericComparator; * functionality – an iterator that can skip over non-competitive documents. * Based on {@link org.apache.lucene.search.comparators.LongComparator} */ -public class LongComparator extends NumericComparator implements SafeCloseable { +public class LongComparator extends NumericComparator implements DiscardingCloseable { private final IArray values; protected long topValue; protected long bottom; diff --git a/src/main/java/it/cavallium/dbengine/lucene/comparators/RelevanceComparator.java b/src/main/java/it/cavallium/dbengine/lucene/comparators/RelevanceComparator.java index 46f5fa2..b4b5812 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/comparators/RelevanceComparator.java +++ b/src/main/java/it/cavallium/dbengine/lucene/comparators/RelevanceComparator.java @@ -16,6 +16,7 @@ */ package it.cavallium.dbengine.lucene.comparators; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.database.disk.LLTempHugePqEnv; import it.cavallium.dbengine.lucene.FloatCodec; @@ -35,7 +36,8 @@ import org.apache.lucene.search.ScoreCachingWrappingScorer; * org.apache.lucene.search.IndexSearcher#search(Query, int)} uses when no {@link org.apache.lucene.search.Sort} is specified). * Based on {@link org.apache.lucene.search.FieldComparator.RelevanceComparator} */ -public final class RelevanceComparator extends FieldComparator implements LeafFieldComparator, SafeCloseable { +public final class RelevanceComparator extends FieldComparator implements LeafFieldComparator, + DiscardingCloseable { private final IArray scores; private float bottom; diff --git a/src/main/java/it/cavallium/dbengine/lucene/comparators/TermOrdValComparator.java b/src/main/java/it/cavallium/dbengine/lucene/comparators/TermOrdValComparator.java index d068b80..86aefb3 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/comparators/TermOrdValComparator.java +++ b/src/main/java/it/cavallium/dbengine/lucene/comparators/TermOrdValComparator.java @@ -1,5 +1,6 @@ package it.cavallium.dbengine.lucene.comparators; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.database.disk.LLTempHugePqEnv; import it.cavallium.dbengine.lucene.ByteArrayCodec; @@ -26,7 +27,8 @@ import org.apache.lucene.util.BytesRef; * it may be slower. * Based on {@link org.apache.lucene.search.FieldComparator.TermOrdValComparator} */ -public class TermOrdValComparator extends FieldComparator implements LeafFieldComparator, SafeCloseable { +public class TermOrdValComparator extends FieldComparator implements LeafFieldComparator, + DiscardingCloseable { /* Ords for each slot. @lucene.internal */ final IArray ords; diff --git a/src/main/java/it/cavallium/dbengine/lucene/hugepq/search/comparators/HugePqDocComparator.java b/src/main/java/it/cavallium/dbengine/lucene/hugepq/search/comparators/HugePqDocComparator.java index 386e0b7..3712bee 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/hugepq/search/comparators/HugePqDocComparator.java +++ b/src/main/java/it/cavallium/dbengine/lucene/hugepq/search/comparators/HugePqDocComparator.java @@ -17,6 +17,7 @@ package it.cavallium.dbengine.lucene.hugepq.search.comparators; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.SafeCloseable; import it.cavallium.dbengine.database.disk.LLTempHugePqEnv; import it.cavallium.dbengine.lucene.IArray; @@ -33,7 +34,8 @@ import org.apache.lucene.search.Scorable; * Comparator that sorts by asc _doc * Based on {@link org.apache.lucene.search.comparators.DocComparator} * */ -public class HugePqDocComparator extends org.apache.lucene.search.comparators.DocComparator implements SafeCloseable { +public class HugePqDocComparator extends org.apache.lucene.search.comparators.DocComparator implements + DiscardingCloseable { private final IArray docIDs; private final boolean enableSkipping; // if skipping functionality should be enabled private int bottom; diff --git a/src/main/java/it/cavallium/dbengine/lucene/searcher/LuceneSearchResult.java b/src/main/java/it/cavallium/dbengine/lucene/searcher/LuceneSearchResult.java index 2f45df2..3dd8cc7 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/searcher/LuceneSearchResult.java +++ b/src/main/java/it/cavallium/dbengine/lucene/searcher/LuceneSearchResult.java @@ -3,6 +3,7 @@ package it.cavallium.dbengine.lucene.searcher; import io.netty5.buffer.api.Drop; import io.netty5.buffer.api.Owned; import it.cavallium.dbengine.client.query.current.data.TotalHitsCount; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.database.LLKeyScore; import io.netty5.buffer.api.internal.ResourceSupport; import it.cavallium.dbengine.utils.SimpleResource; @@ -11,7 +12,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import reactor.core.publisher.Flux; -public final class LuceneSearchResult extends SimpleResource { +public final class LuceneSearchResult extends SimpleResource implements DiscardingCloseable { private static final Logger logger = LogManager.getLogger(LuceneSearchResult.class); diff --git a/src/test/java/it/cavallium/dbengine/PriorityQueueAdaptor.java b/src/test/java/it/cavallium/dbengine/PriorityQueueAdaptor.java index 80b4e8d..a80ce69 100644 --- a/src/test/java/it/cavallium/dbengine/PriorityQueueAdaptor.java +++ b/src/test/java/it/cavallium/dbengine/PriorityQueueAdaptor.java @@ -1,5 +1,6 @@ package it.cavallium.dbengine; +import it.cavallium.dbengine.database.DiscardingCloseable; import it.cavallium.dbengine.lucene.PriorityQueue; import it.cavallium.dbengine.utils.SimpleResource; import java.io.IOException; @@ -9,8 +10,8 @@ import java.util.Objects; import org.apache.lucene.search.HitQueue; import reactor.core.publisher.Flux; -public class PriorityQueueAdaptor extends SimpleResource implements PriorityQueue { - +public class PriorityQueueAdaptor extends SimpleResource implements PriorityQueue, DiscardingCloseable { + private final org.apache.lucene.util.PriorityQueue hitQueue; public PriorityQueueAdaptor(org.apache.lucene.util.PriorityQueue hitQueue) {