diff options
Diffstat (limited to 'container-search/src/main/java/com')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java | 7 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/result/ErrorMessage.java | 8 |
2 files changed, 14 insertions, 1 deletions
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); |