Bugfix
This commit is contained in:
parent
01099cc4d1
commit
2e1678373c
@ -33,7 +33,7 @@ public class UnsortedUnscoredStreamingMultiSearcher implements MultiSearcher {
|
|||||||
|
|
||||||
private static final int SEARCH_THREADS = Math.min(Math.max(8, Runtime.getRuntime().availableProcessors()), 128);
|
private static final int SEARCH_THREADS = Math.min(Math.max(8, Runtime.getRuntime().availableProcessors()), 128);
|
||||||
private static final ThreadFactory THREAD_FACTORY = new ShortNamedThreadFactory("UnscoredStreamingSearcher");
|
private static final ThreadFactory THREAD_FACTORY = new ShortNamedThreadFactory("UnscoredStreamingSearcher");
|
||||||
private static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(SEARCH_THREADS, THREAD_FACTORY);
|
private static final ExecutorService EXECUTOR = Executors.newCachedThreadPool(); // Executors.newFixedThreadPool(SEARCH_THREADS, THREAD_FACTORY);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Mono<LuceneSearchResult> collectMulti(Mono<Send<LLIndexSearchers>> indexSearchersMono,
|
public Mono<LuceneSearchResult> collectMulti(Mono<Send<LLIndexSearchers>> indexSearchersMono,
|
||||||
@ -81,11 +81,12 @@ public class UnsortedUnscoredStreamingMultiSearcher implements MultiSearcher {
|
|||||||
AtomicReference<Thread> threadAtomicReference = new AtomicReference<>();
|
AtomicReference<Thread> threadAtomicReference = new AtomicReference<>();
|
||||||
|
|
||||||
var disposable = EXECUTOR.submit(() -> {
|
var disposable = EXECUTOR.submit(() -> {
|
||||||
LLUtils.ensureBlocking();
|
try {
|
||||||
threadAtomicReference.set(Thread.currentThread());
|
LLUtils.ensureBlocking();
|
||||||
int shardIndexTemp = 0;
|
threadAtomicReference.set(Thread.currentThread());
|
||||||
for (IndexSearcher shard : shards) {
|
int shardIndexTemp = 0;
|
||||||
try {
|
for (IndexSearcher shard : shards) {
|
||||||
|
if (sink.isCancelled()) break;
|
||||||
final int shardIndex = shardIndexTemp;
|
final int shardIndex = shardIndexTemp;
|
||||||
var collector = withTimeout(new SimpleCollector() {
|
var collector = withTimeout(new SimpleCollector() {
|
||||||
private LeafReaderContext leafReaderContext;
|
private LeafReaderContext leafReaderContext;
|
||||||
@ -116,12 +117,12 @@ public class UnsortedUnscoredStreamingMultiSearcher implements MultiSearcher {
|
|||||||
}
|
}
|
||||||
}, localQueryParams.timeout());
|
}, localQueryParams.timeout());
|
||||||
shard.search(localQueryParams.query(), collector);
|
shard.search(localQueryParams.query(), collector);
|
||||||
sink.complete();
|
shardIndexTemp++;
|
||||||
} catch (Throwable e) {
|
|
||||||
sink.error(e);
|
|
||||||
}
|
}
|
||||||
shardIndexTemp++;
|
} catch (Throwable e) {
|
||||||
|
sink.error(e);
|
||||||
}
|
}
|
||||||
|
sink.complete();
|
||||||
});
|
});
|
||||||
sink.onRequest(lc -> LockSupport.unpark(threadAtomicReference.get()));
|
sink.onRequest(lc -> LockSupport.unpark(threadAtomicReference.get()));
|
||||||
sink.onDispose(() -> disposable.cancel(false));
|
sink.onDispose(() -> disposable.cancel(false));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user