Add discarding closeable

This commit is contained in:
Andrea Cavalli 2022-06-30 15:06:10 +02:00
parent ab93ede348
commit 8e50976d27
35 changed files with 82 additions and 40 deletions

View File

@ -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<T> extends SimpleResource {
public final class Hits<T> extends SimpleResource implements DiscardingCloseable {
private static final Hits<?> EMPTY_HITS = new Hits<>(Flux.empty(), TotalHitsCount.of(0, true), null, false);
private Flux<T> results;

View File

@ -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<T, U> implements LuceneIndex<T, U> {
.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<T, U> implements LuceneIndex<T, U> {
.mapNotNull(shards -> mergeResults(queryParams, shards))
.map(this::mapResults)
.defaultIfEmpty(Hits.empty())
.doOnDiscard(SimpleResource.class, SimpleResource::close);
.doOnDiscard(DiscardingCloseable.class, DiscardingCloseable::close);
}
@Override

View File

@ -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<Buffer> {
public abstract class BufSupplier implements SafeCloseable, DiscardingCloseable, Supplier<Buffer> {
public static BufSupplier of(Supplier<Buffer> supplier) {
return new SimpleBufSupplier(supplier);

View File

@ -0,0 +1,6 @@
package it.cavallium.dbengine.database;
/**
* Closeable resource that can be closed if discarded
*/
public interface DiscardingCloseable extends SafeCloseable {}

View File

@ -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;

View File

@ -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);

View File

@ -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();

View File

@ -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;

View File

@ -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<LLRange> {
public abstract class RangeSupplier implements DiscardingCloseable, Supplier<LLRange> {
public static RangeSupplier of(Supplier<LLRange> supplier) {
return new SimpleSupplier(supplier);

View File

@ -4,7 +4,7 @@ import it.cavallium.dbengine.database.collections.DatabaseStage;
import java.util.Map.Entry;
import java.util.Objects;
public final class SubStageEntry<T, U extends DatabaseStage<?>> implements SafeCloseable, Entry<T, U> {
public final class SubStageEntry<T, U extends DatabaseStage<?>> implements DiscardingCloseable, Entry<T, U> {
private final T key;
private final U value;

View File

@ -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;

View File

@ -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);

View File

@ -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<LLIndexSearcher> indexSearchers) {
return new ShardedIndexSearchers(indexSearchers);

View File

@ -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 extends AbstractNativeReference, U extends Resource<?>>(T t1, U t2) implements SafeCloseable {
private record RocksObjTuple<T extends AbstractNativeReference, U extends Resource<?>>(T t1, U t2) implements
DiscardingCloseable {
@Override
public void close() {

View File

@ -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;

View File

@ -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<AbstractImmutableNativeReference> list = new ArrayList<>();
private boolean closed;

View File

@ -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() {

View File

@ -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 {}

View File

@ -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;

View File

@ -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<T> extends Iterable<T>, SafeCloseable {
public interface CloseableIterable<T> extends Iterable<T>, DiscardingCloseable {
@Override
void close();

View File

@ -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<V> extends SimpleResource implements IArray<V>, SafeCloseable {
public class HugePqArray<V> extends SimpleResource implements IArray<V>, DiscardingCloseable {
static {
RocksDB.loadLibrary();

View File

@ -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<LLSlotDoc>, FieldValueHitQueue, SafeCloseable {
implements HugePqCodec<LLSlotDoc>, FieldValueHitQueue, DiscardingCloseable {
private final SortField[] fields;

View File

@ -1,8 +1,9 @@
package it.cavallium.dbengine.lucene;
import it.cavallium.dbengine.database.DiscardingCloseable;
import it.cavallium.dbengine.database.SafeCloseable;
public interface PriorityQueue<T> extends ResourceIterable<T>, SafeCloseable {
public interface PriorityQueue<T> extends ResourceIterable<T>, DiscardingCloseable {
/**
* Adds an Object to a PriorityQueue in log(size) time. If one tries to add more objects than maxSize from initialize

View File

@ -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<T> extends SafeCloseable {
public interface ResourceIterable<T> extends DiscardingCloseable {
/**
* Iterate this PriorityQueue

View File

@ -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<PQ extends PriorityQueue<INTERNAL> & Reversable<ReversableResourceIterable<INTERNAL>>, 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

View File

@ -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<T extends LLDoc> extends SimpleResource implements FullDocs<T>, SafeCloseable {
public class FullFieldDocs<T extends LLDoc> extends SimpleResource implements FullDocs<T>, DiscardingCloseable {
private final FullDocs<T> fullDocs;
private final SortField[] fields;

View File

@ -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<Double> implements SafeCloseable {
public class DoubleComparator extends NumericComparator<Double> implements DiscardingCloseable {
private final IArray<Double> values;
protected double topValue;
protected double bottom;

View File

@ -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<Float> implements SafeCloseable {
public class FloatComparator extends NumericComparator<Float> implements DiscardingCloseable {
private final IArray<Float> values;
protected float topValue;
protected float bottom;

View File

@ -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<Integer> implements SafeCloseable {
public class IntComparator extends NumericComparator<Integer> implements DiscardingCloseable {
private final IArray<Integer> values;
protected int topValue;
protected int bottom;

View File

@ -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<Long> implements SafeCloseable {
public class LongComparator extends NumericComparator<Long> implements DiscardingCloseable {
private final IArray<Long> values;
protected long topValue;
protected long bottom;

View File

@ -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<Float> implements LeafFieldComparator, SafeCloseable {
public final class RelevanceComparator extends FieldComparator<Float> implements LeafFieldComparator,
DiscardingCloseable {
private final IArray<Float> scores;
private float bottom;

View File

@ -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<BytesRef> implements LeafFieldComparator, SafeCloseable {
public class TermOrdValComparator extends FieldComparator<BytesRef> implements LeafFieldComparator,
DiscardingCloseable {
/* Ords for each slot.
@lucene.internal */
final IArray<Integer> ords;

View File

@ -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<Integer> docIDs;
private final boolean enableSkipping; // if skipping functionality should be enabled
private int bottom;

View File

@ -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);

View File

@ -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<T> extends SimpleResource implements PriorityQueue<T> {
public class PriorityQueueAdaptor<T> extends SimpleResource implements PriorityQueue<T>, DiscardingCloseable {
private final org.apache.lucene.util.PriorityQueue<T> hitQueue;
public PriorityQueueAdaptor(org.apache.lucene.util.PriorityQueue<T> hitQueue) {