summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-09-24 21:17:38 +0200
committerJon Bratseth <bratseth@verizonmedia.com>2019-09-24 21:17:38 +0200
commitc9c3272fec776cdcfcb52b7ff4055a9cc2827025 (patch)
treed2214c4647a79d1969b9e648b32e167adf07b0fe /container-search
parentcd548f53404bd41bdf3b2a4a0279a437bbd9a160 (diff)
Classify compare implementation bugs correctly
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java44
1 files changed, 22 insertions, 22 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
index 64db1cf0062..1c58081e4f1 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
@@ -394,27 +394,29 @@ public class SearchHandler extends LoggingRequestHandler {
log.log(LogLevel.DEBUG, () -> error.getDetailedMessage());
return new Result(query, error);
} catch (IllegalArgumentException e) {
- ErrorMessage error = ErrorMessage.createBadRequest("Invalid search request [" + request + "]: "
- + Exceptions.toMessageString(e));
- log.log(LogLevel.DEBUG, () -> error.getDetailedMessage());
- return new Result(query, error);
- } catch (LinkageError e) {
- // Should have been an Exception in an OSGi world - typical bundle dependency issue problem
- ErrorMessage error = ErrorMessage.createErrorInPluginSearcher(
- "Error executing " + searchChain + "]: " + Exceptions.toMessageString(e), e);
- log(request, query, e);
- return new Result(query, error);
- } catch (StackOverflowError e) { // Also recoverable
- ErrorMessage error = ErrorMessage.createErrorInPluginSearcher(
- "Error executing " + searchChain + "]: " + Exceptions.toMessageString(e), e);
+ if ("Comparison method violates its general contract!".equals(e.getMessage())) {
+ // This is an error in application components or Vespa code
+ log(request, query, e);
+ return new Result(query, ErrorMessage.createUnspecifiedError("Failed searching: " +
+ Exceptions.toMessageString(e), e));
+ }
+ else {
+ ErrorMessage error = ErrorMessage.createBadRequest("Invalid search request [" + request + "]: "
+ + Exceptions.toMessageString(e));
+ log.log(LogLevel.DEBUG, () -> error.getDetailedMessage());
+ return new Result(query, error);
+ }
+ } catch (LinkageError | StackOverflowError e) {
+ // LinkageError should have been an Exception in an OSGi world - typical bundle dependency issue problem
+ // StackOverflowError is recoverable
+ ErrorMessage error = ErrorMessage.createErrorInPluginSearcher("Error executing " + searchChain + "]: " +
+ Exceptions.toMessageString(e), e);
log(request, query, e);
return new Result(query, error);
} catch (Exception e) {
- Result result = new Result(query);
log(request, query, e);
- result.hits().addError(
- ErrorMessage.createUnspecifiedError("Failed searching: " + Exceptions.toMessageString(e), e));
- return result;
+ return new Result(query, ErrorMessage.createUnspecifiedError("Failed searching: " +
+ Exceptions.toMessageString(e), e));
}
}
@@ -448,12 +450,10 @@ public class SearchHandler extends LoggingRequestHandler {
private void log(String request, Query query, Throwable e) {
// Attempted workaround for missing stack traces
if (e.getStackTrace().length == 0) {
- log.log(LogLevel.ERROR,
- "Failed executing " + query.toDetailString() + " [" + request
- + "], received exception with no context", e);
+ log.log(LogLevel.ERROR, "Failed executing " + query.toDetailString() +
+ " [" + request + "], received exception with no context", e);
} else {
- log.log(LogLevel.ERROR,
- "Failed executing " + query.toDetailString() + " [" + request + "]", e);
+ log.log(LogLevel.ERROR, "Failed executing " + query.toDetailString() + " [" + request + "]", e);
}
}