From f2567677e8b658ef28b234089cd3cc7a03bb5264 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Fri, 10 Jan 2025 15:17:07 +0100 Subject: [PATCH] (index-client) Clean up index client code Improve error handling. This should be a relatively rare case, but we don't want one bad index partition to blow up the entire query. --- .../api/java/nu/marginalia/index/api/IndexClient.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/index/api/java/nu/marginalia/index/api/IndexClient.java b/code/index/api/java/nu/marginalia/index/api/IndexClient.java index 02a72d96..2889f43c 100644 --- a/code/index/api/java/nu/marginalia/index/api/IndexClient.java +++ b/code/index/api/java/nu/marginalia/index/api/IndexClient.java @@ -21,6 +21,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Consumer; @Singleton public class IndexClient { @@ -65,7 +66,13 @@ public class IndexClient { totalNumResults.addAndGet(ret.size()); return ret; })) - .map(CompletableFuture::join) + .mapMulti((CompletableFuture> fut, Consumer> c) ->{ + try { + c.accept(fut.join()); + } catch (Exception e) { + logger.error("Error while fetching results", e); + } + }) .flatMap(List::stream) .filter(item -> !isBlacklisted(item)) .sorted(comparator)