diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-09-24 21:17:38 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-09-24 21:17:38 +0200 |
commit | c9c3272fec776cdcfcb52b7ff4055a9cc2827025 (patch) | |
tree | d2214c4647a79d1969b9e648b32e167adf07b0fe /container-search/src/main/java | |
parent | cd548f53404bd41bdf3b2a4a0279a437bbd9a160 (diff) |
Classify compare implementation bugs correctly
Diffstat (limited to 'container-search/src/main/java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java | 44 |
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); } } |