summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2021-10-10 13:53:12 +0200
committerGitHub <noreply@github.com>2021-10-10 13:53:12 +0200
commit933496ef80008d51c26f2c3010d86a7c2b35d1d1 (patch)
tree3c1dabaf83304348117ded81a593dc8d4bd1dac0
parent165142127b8d40621fdd29a2fcac74084eeb4d9c (diff)
parent27e4d023dc0afc8394b80eb8030691f72cfe5513 (diff)
Merge pull request #19492 from vespa-engine/arnej/simpler-error-merging
Arnej/simpler error merging
-rw-r--r--container-search/abi-spec.json1
-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.java9
-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
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