From b90a78ef219c65be80ee22f1ed16c481447c2260 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Mon, 14 Feb 2022 00:31:31 +0100 Subject: [PATCH] Fix NPE --- .../dbengine/lucene/LuceneUtils.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java b/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java index 294adda..609aff0 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java +++ b/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java @@ -356,11 +356,22 @@ public class LuceneUtils { return hitsFlux .buffer(Queues.XS_BUFFER_SIZE, () -> new ArrayList(Queues.XS_BUFFER_SIZE)) .flatMap(shardHits -> Mono.fromCallable(() -> { - for (int i = 0, size = shardHits.size(); i < size; i++) { - shardHits.set(i, mapHitBlocking((ScoreDoc) shardHits.get(i), indexSearchers, keyFieldName)); + int i2 = 0; + int size = shardHits.size(); + for (int i = 0; i < size; i++) { + var el = mapHitBlocking((ScoreDoc) shardHits.get(i), indexSearchers, keyFieldName); + if (el != null) { + shardHits.set(i2, el); + i2++; + } + } + if (i2 < size) { + //noinspection unchecked + return (List) (List) shardHits.subList(0, i2); + } else { + //noinspection unchecked + return (List) (List) shardHits; } - //noinspection unchecked - return (List) (List) shardHits; }).subscribeOn(uninterruptibleScheduler(Schedulers.boundedElastic()))) .flatMapIterable(a -> a) .publishOn(Schedulers.parallel());