summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2021-10-10 10:27:34 +0000
committerArne H Juul <arnej@yahooinc.com>2021-10-10 10:27:34 +0000
commit9edd07881605948692877f570ebc501b25192e29 (patch)
treedd8ae712214c8e53df6a023259f51cd6a239c9ac /container-search
parent165142127b8d40621fdd29a2fcac74084eeb4d9c (diff)
simplify HitGroup error propagation
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java6
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java5
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java10
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/HitGroup.java10
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