mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 21:18:58 +00:00
(qs) Don't blow up if an index node isn't responsive
This commit is contained in:
parent
2ed2f35a9b
commit
efb73ff4e7
@ -15,6 +15,8 @@ import nu.marginalia.mq.MessageQueueFactory;
|
||||
import nu.marginalia.mq.outbox.MqOutbox;
|
||||
import nu.marginalia.service.descriptor.ServiceDescriptors;
|
||||
import nu.marginalia.service.id.ServiceId;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.CheckReturnValue;
|
||||
@ -54,8 +56,12 @@ public class IndexClient extends AbstractDynamicClient {
|
||||
@CheckReturnValue
|
||||
public SearchResultSet query(Context ctx, List<Integer> nodes, SearchSpecification specs) {
|
||||
return Observable.fromIterable(nodes)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.concatMap(node -> this.postGet(ctx, node,"/search/", specs, SearchResultSet.class))
|
||||
.concatMap(node -> this
|
||||
.postGet(ctx, node,"/search/", specs, SearchResultSet.class)
|
||||
.onErrorReturn(t -> new SearchResultSet()),
|
||||
nodes.size(),
|
||||
Schedulers.io()
|
||||
)
|
||||
.reduce(SearchResultSet::combine)
|
||||
.blockingGet();
|
||||
}
|
||||
|
@ -10,6 +10,10 @@ import java.util.List;
|
||||
|
||||
@AllArgsConstructor @Getter @ToString
|
||||
public class SearchResultSet {
|
||||
public SearchResultSet() {
|
||||
results = new ArrayList<>();
|
||||
}
|
||||
|
||||
public List<DecoratedSearchResultItem> results;
|
||||
public int size() {
|
||||
return results.size();
|
||||
|
Loading…
Reference in New Issue
Block a user