Add discarding closeable
This commit is contained in:
parent
ab93ede348
commit
8e50976d27
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
package it.cavallium.dbengine.database;
|
||||
|
||||
/**
|
||||
* Closeable resource that can be closed if discarded
|
||||
*/
|
||||
public interface DiscardingCloseable extends SafeCloseable {}
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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 {}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue