diff options
author | Jon Bratseth <jonbratseth@yahoo.com> | 2017-10-26 22:22:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-26 22:22:43 +0200 |
commit | e7c246d3fa83b819e879f4ac1011540622f9fef9 (patch) | |
tree | 0d19e29c84527b16172c7b975be7f048889884b0 /documentapi/src | |
parent | b8fef0980ec680ec95c7005fe22387346e631853 (diff) | |
parent | c9a03498242155d3f27f7423c7c8d3ec9be43c2a (diff) |
Merge pull request #3910 from vespa-engine/bergum/improve-trace-of-exceptions
Add stack trace to message
Diffstat (limited to 'documentapi/src')
-rw-r--r-- | documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AsyncInitializationPolicy.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AsyncInitializationPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AsyncInitializationPolicy.java index 947e119fbd4..cbcea4775b4 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AsyncInitializationPolicy.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AsyncInitializationPolicy.java @@ -1,14 +1,18 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.documentapi.messagebus.protocol; +import com.yahoo.log.LogLevel; import com.yahoo.messagebus.*; import com.yahoo.messagebus.metrics.MetricSet; import com.yahoo.messagebus.routing.RoutingContext; +import java.io.PrintWriter; +import java.io.StringWriter; import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.logging.Logger; /** * Abstract class for routing policies that need asynchronous initialization. @@ -24,6 +28,8 @@ public abstract class AsyncInitializationPolicy implements DocumentProtocolRouti DONE }; + private static final Logger log = Logger.getLogger(AsyncInitializationPolicy.class.getName()); + InitState initState; ScheduledThreadPoolExecutor executor; Exception initException; @@ -78,7 +84,7 @@ public abstract class AsyncInitializationPolicy implements DocumentProtocolRouti synchronized (this) { if (initException != null) { Reply reply = new EmptyReply(); - reply.addError(new com.yahoo.messagebus.Error(ErrorCode.POLICY_ERROR, initException.getMessage())); + reply.addError(new com.yahoo.messagebus.Error(ErrorCode.POLICY_ERROR, "Policy threw exception during init:" + exceptionMessageWithTrace(initException))); routingContext.setReply(reply); return; } @@ -100,6 +106,7 @@ public abstract class AsyncInitializationPolicy implements DocumentProtocolRouti try { init(); } catch (Exception e) { + log.log(LogLevel.WARNING,"Init threw exception",e); initException = e; } @@ -115,4 +122,18 @@ public abstract class AsyncInitializationPolicy implements DocumentProtocolRouti executor.shutdownNow(); } } + + + private static String exceptionMessageWithTrace(Exception e) { + StringWriter sw = new StringWriter(); + try (PrintWriter pw = new PrintWriter(sw)) { + e.printStackTrace(pw); + pw.flush(); + } + return sw.toString(); + + } + + + } |