Attempt to keep record of uncaught Exception
Change-Id: I0da6aae52c758dd14ccd47c8865827e814f05a58
Showing
1 changed file
with
17 additions
and
1 deletions
... | @@ -15,16 +15,21 @@ | ... | @@ -15,16 +15,21 @@ |
15 | */ | 15 | */ |
16 | package org.onlab.util; | 16 | package org.onlab.util; |
17 | 17 | ||
18 | +import static org.slf4j.LoggerFactory.getLogger; | ||
19 | + | ||
18 | import java.io.BufferedReader; | 20 | import java.io.BufferedReader; |
19 | import java.io.File; | 21 | import java.io.File; |
20 | import java.io.FileInputStream; | 22 | import java.io.FileInputStream; |
21 | import java.io.IOException; | 23 | import java.io.IOException; |
22 | import java.io.InputStreamReader; | 24 | import java.io.InputStreamReader; |
25 | +import java.lang.Thread.UncaughtExceptionHandler; | ||
23 | import java.nio.charset.StandardCharsets; | 26 | import java.nio.charset.StandardCharsets; |
24 | import java.util.ArrayList; | 27 | import java.util.ArrayList; |
25 | import java.util.List; | 28 | import java.util.List; |
26 | import java.util.concurrent.ThreadFactory; | 29 | import java.util.concurrent.ThreadFactory; |
27 | 30 | ||
31 | +import org.slf4j.Logger; | ||
32 | + | ||
28 | import com.google.common.base.Strings; | 33 | import com.google.common.base.Strings; |
29 | import com.google.common.primitives.UnsignedLongs; | 34 | import com.google.common.primitives.UnsignedLongs; |
30 | import com.google.common.util.concurrent.ThreadFactoryBuilder; | 35 | import com.google.common.util.concurrent.ThreadFactoryBuilder; |
... | @@ -34,6 +39,8 @@ public abstract class Tools { | ... | @@ -34,6 +39,8 @@ public abstract class Tools { |
34 | private Tools() { | 39 | private Tools() { |
35 | } | 40 | } |
36 | 41 | ||
42 | + private static final Logger TOOLS_LOG = getLogger(Tools.class); | ||
43 | + | ||
37 | /** | 44 | /** |
38 | * Returns a thread factory that produces threads named according to the | 45 | * Returns a thread factory that produces threads named according to the |
39 | * supplied name pattern. | 46 | * supplied name pattern. |
... | @@ -42,7 +49,16 @@ public abstract class Tools { | ... | @@ -42,7 +49,16 @@ public abstract class Tools { |
42 | * @return thread factory | 49 | * @return thread factory |
43 | */ | 50 | */ |
44 | public static ThreadFactory namedThreads(String pattern) { | 51 | public static ThreadFactory namedThreads(String pattern) { |
45 | - return new ThreadFactoryBuilder().setNameFormat(pattern).build(); | 52 | + return new ThreadFactoryBuilder() |
53 | + .setNameFormat(pattern) | ||
54 | + // FIXME remove UncaughtExceptionHandler before release | ||
55 | + .setUncaughtExceptionHandler(new UncaughtExceptionHandler() { | ||
56 | + | ||
57 | + @Override | ||
58 | + public void uncaughtException(Thread t, Throwable e) { | ||
59 | + TOOLS_LOG.error("Uncaught exception on {}", t.getName(), e); | ||
60 | + } | ||
61 | + }).build(); | ||
46 | } | 62 | } |
47 | 63 | ||
48 | /** | 64 | /** | ... | ... |
-
Please register or login to post a comment