You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by li...@apache.org on 2022/09/21 05:10:27 UTC
[rocketmq] branch develop updated: [ISSUE #5095] Support output thread exception information to the error log (#5129)
This is an automated email from the ASF dual-hosted git repository.
lizhimin pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new 4fcacb60d [ISSUE #5095] Support output thread exception information to the error log (#5129)
4fcacb60d is described below
commit 4fcacb60d07f27f53ea76e846afd192e8ea74254
Author: lizhimins <70...@qq.com>
AuthorDate: Wed Sep 21 13:10:06 2022 +0800
[ISSUE #5095] Support output thread exception information to the error log (#5129)
---
.../java/org/apache/rocketmq/common/ThreadFactoryImpl.java | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/common/src/main/java/org/apache/rocketmq/common/ThreadFactoryImpl.java b/common/src/main/java/org/apache/rocketmq/common/ThreadFactoryImpl.java
index a76f605f7..a21fb35c1 100644
--- a/common/src/main/java/org/apache/rocketmq/common/ThreadFactoryImpl.java
+++ b/common/src/main/java/org/apache/rocketmq/common/ThreadFactoryImpl.java
@@ -19,8 +19,14 @@ package org.apache.rocketmq.common;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicLong;
+import org.apache.rocketmq.common.constant.LoggerName;
+import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.logging.InternalLoggerFactory;
public class ThreadFactoryImpl implements ThreadFactory {
+
+ private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+
private final AtomicLong threadIndex = new AtomicLong(0);
private final String threadNamePrefix;
private final boolean daemon;
@@ -51,6 +57,12 @@ public class ThreadFactoryImpl implements ThreadFactory {
public Thread newThread(Runnable r) {
Thread thread = new Thread(r, threadNamePrefix + this.threadIndex.incrementAndGet());
thread.setDaemon(daemon);
+
+ // Log all uncaught exception
+ thread.setUncaughtExceptionHandler((t, e) ->
+ LOGGER.error("[BUG] Thread has an uncaught exception, threadId={}, threadName={}",
+ t.getId(), t.getName(), e));
+
return thread;
}
}