diff options
3 files changed, 16 insertions, 5 deletions
diff --git a/container-core/src/main/java/com/yahoo/processing/request/ErrorMessage.java b/container-core/src/main/java/com/yahoo/processing/request/ErrorMessage.java index ca2a00ffe46..9fca0bb0ddb 100644 --- a/container-core/src/main/java/com/yahoo/processing/request/ErrorMessage.java +++ b/container-core/src/main/java/com/yahoo/processing/request/ErrorMessage.java @@ -160,7 +160,7 @@ public class ErrorMessage implements Cloneable { message = getMessage(t); if (message == null) continue; if (lastMessage != null && lastMessage.equals(message)) continue; - if (b.length() > 0) + if (!b.isEmpty()) b.append(": "); b.append(message); } @@ -191,9 +191,7 @@ public class ErrorMessage implements Cloneable { */ @Override public boolean equals(Object o) { - if (!(o instanceof ErrorMessage)) return false; - - ErrorMessage other = (ErrorMessage) o; + if (!(o instanceof ErrorMessage other)) return false; if (this.code != other.code) return false; diff --git a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java index e20c4271fe0..441c4326355 100644 --- a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java @@ -270,7 +270,12 @@ public class ClusterSearcher extends Searcher { Result result = task.get(); mergedResult.mergeWith(result); mergedResult.hits().addAll(result.hits().asUnorderedHits()); - } catch (ExecutionException | InterruptedException e) { + } catch (ExecutionException e) { + mergedResult.hits().addError(ErrorMessage.createInternalServerError("Failed querying '" + + query.getModel().getRestrict() + "': " + + Exceptions.toMessageString(e), + e)); + } catch (InterruptedException e) { mergedResult.hits().addError(ErrorMessage.createInternalServerError("Failed querying '" + query.getModel().getRestrict() + "': " + Exceptions.toMessageString(e))); diff --git a/container-search/src/main/java/com/yahoo/search/result/ErrorMessage.java b/container-search/src/main/java/com/yahoo/search/result/ErrorMessage.java index a6f57aa866a..503bbd725c3 100644 --- a/container-search/src/main/java/com/yahoo/search/result/ErrorMessage.java +++ b/container-search/src/main/java/com/yahoo/search/result/ErrorMessage.java @@ -163,6 +163,14 @@ public class ErrorMessage extends com.yahoo.processing.request.ErrorMessage { return new ErrorMessage(INTERNAL_SERVER_ERROR.code, "Internal server error.", detailedMessage); } + /** + * Creates an error analog to HTTP internal server error. If this error is present, a + * HTTP layer will return 500. + */ + public static ErrorMessage createInternalServerError(String detailedMessage, Throwable cause) { + return new ErrorMessage(INTERNAL_SERVER_ERROR.code, "Internal server error.", detailedMessage, cause); + } + /** Wraps an error message received in a SearchReply packet */ public static ErrorMessage createSearchReplyError(String detailedMessage) { return new ErrorMessage(RESULT_HAS_ERRORS.code, "Error in search reply.", detailedMessage); |