diff options
author | Arne H Juul <arnej@yahooinc.com> | 2021-10-10 10:27:34 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2021-10-10 10:27:34 +0000 |
commit | 9edd07881605948692877f570ebc501b25192e29 (patch) | |
tree | dd8ae712214c8e53df6a023259f51cd6a239c9ac /container-search | |
parent | 165142127b8d40621fdd29a2fcac74084eeb4d9c (diff) |
simplify HitGroup error propagation
Diffstat (limited to 'container-search')
5 files changed, 15 insertions, 20 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java index c28e18a37d5..9c663dab3b2 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java @@ -232,11 +232,7 @@ public abstract class VespaBackEndSearcher extends PingableSearcher { } private void mergeErrorsInto(Result destination, Result source) { - ErrorHit eh = source.hits().getErrorHit(); - if (eh != null) { - for (ErrorMessage error : eh.errors()) - destination.hits().addError(error); - } + destination.hits().addErrorsFrom(source.hits()); } void traceQuery(String sourceName, String type, Query query, int offset, int hits, int level, Optional<String> quotedSummaryClass) { diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java index e622cfb8bd8..5a5e9569723 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java @@ -154,10 +154,7 @@ public class MultipleResultsSearcher extends Searcher { // ensure that field sddocname is available execution.fill(result); // TODO: Suffices to fill attributes - if (result.hits().getErrorHit() != null) - initialResult.hits().getErrorHit().addErrors( - result.hits().getErrorHit()); - + initialResult.hits().addErrorsFrom(result.hits()); return result; } diff --git a/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java b/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java index 7d3a0291ab7..282eb8907a0 100644 --- a/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java @@ -457,9 +457,7 @@ public class FederationSearcher extends ForkingSearcher { } private void propagateErrors(Result source, Result destination) { - ErrorMessage error = source.hits().getError(); - if (error != null) - destination.hits().addError(error); + destination.hits().addErrorsFrom(source.hits()); } private void addResultsToFill(HitGroup hitGroup, Result result, String summaryClass, diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java index 21db47908a8..9859678f492 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java @@ -123,10 +123,7 @@ public class GroupingExecutor extends Searcher { for (Map.Entry<String, Result> entry : summaryMap.entrySet()) { Result res = entry.getValue(); execution.fill(res, entry.getKey()); - ErrorMessage err = res.hits().getError(); - if (err != null) { - result.hits().addError(err); - } + result.hits().addErrorsFrom(res.hits()); } Result defaultResult = summaryMap.get(ExpressionConverter.DEFAULT_SUMMARY_NAME); if (defaultResult != null) { @@ -251,10 +248,7 @@ public class GroupingExecutor extends Searcher { if (firstPass) { ret = passResult; } else { - ErrorMessage err = passResult.hits().getError(); - if (err != null) { - ret.hits().addError(err); - } + ret.hits().addErrorsFrom(passResult.hits()); } } if (log.isLoggable(Level.FINE)) { diff --git a/container-search/src/main/java/com/yahoo/search/result/HitGroup.java b/container-search/src/main/java/com/yahoo/search/result/HitGroup.java index ce99b8b8d0b..1ae3f4e60cc 100644 --- a/container-search/src/main/java/com/yahoo/search/result/HitGroup.java +++ b/container-search/src/main/java/com/yahoo/search/result/HitGroup.java @@ -399,6 +399,16 @@ public class HitGroup extends Hit implements DataList<Hit>, Cloneable, Iterable< errorHit.addError(error); } + /** merge any errors from the other HitGroup into this */ + public void addErrorsFrom(HitGroup other) { + ErrorHit otherErrorHit = other.getErrorHit(); + if (otherErrorHit != null) { + for (ErrorMessage msg : otherErrorHit.errors()) { + addError(msg); + } + } + } + /** Returns the error hit containing all error information, or null if no error has occurred */ public ErrorHit getErrorHit() { getError(); // Make sure the error hit is updated |