diff options
author | Jon Bratseth <bratseth@oath.com> | 2021-10-10 13:53:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-10 13:53:12 +0200 |
commit | 933496ef80008d51c26f2c3010d86a7c2b35d1d1 (patch) | |
tree | 3c1dabaf83304348117ded81a593dc8d4bd1dac0 | |
parent | 165142127b8d40621fdd29a2fcac74084eeb4d9c (diff) | |
parent | 27e4d023dc0afc8394b80eb8030691f72cfe5513 (diff) |
Merge pull request #19492 from vespa-engine/arnej/simpler-error-merging
Arnej/simpler error merging
6 files changed, 18 insertions, 22 deletions
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json index 91d4fc780a6..7e079e6c800 100644 --- a/container-search/abi-spec.json +++ b/container-search/abi-spec.json @@ -7604,6 +7604,7 @@ "public com.yahoo.search.result.Hit remove(com.yahoo.net.URI)", "public com.yahoo.search.result.Hit remove(int)", "public void addError(com.yahoo.search.result.ErrorMessage)", + "public void addErrorsFrom(com.yahoo.search.result.HitGroup)", "public com.yahoo.search.result.ErrorHit getErrorHit()", "public com.yahoo.search.result.DefaultErrorHit removeErrorHit()", "public com.yahoo.search.result.ErrorMessage getError()", 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..d017cce0d44 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 @@ -153,12 +153,9 @@ public class MultipleResultsSearcher extends Searcher { Result result = execution.search(query); // 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()); - - + if (initialResult != null) { + 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 |