diff options
Diffstat (limited to 'container-search')
3 files changed, 15 insertions, 1 deletions
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json index 80833e3e27c..aedccbee46b 100644 --- a/container-search/abi-spec.json +++ b/container-search/abi-spec.json @@ -7802,6 +7802,7 @@ "public static com.yahoo.search.result.ErrorMessage createNotFound(java.lang.String)", "public static com.yahoo.search.result.ErrorMessage createBadRequest(java.lang.String)", "public static com.yahoo.search.result.ErrorMessage createInternalServerError(java.lang.String)", + "public static com.yahoo.search.result.ErrorMessage createInternalServerError(java.lang.String, java.lang.Throwable)", "public static com.yahoo.search.result.ErrorMessage createSearchReplyError(java.lang.String)", "public static com.yahoo.search.result.ErrorMessage createDocsumReplyError(java.lang.String)", "public void setSource(java.lang.String)", 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); |