From 8f40fd6a3f3687351bf4dc03ddc8c4d4787d19d2 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 bdcc5e7..75a24a6 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java +++ b/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java @@ -355,11 +355,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());